如何在类型提示中指定函数类型?
- 2024-12-25 08:51:00
- admin 原创
- 139
问题描述:
如何将变量的类型提示指定为函数类型?没有,而且我在相关 PEP、 PEP 483typing.Function
中找不到任何内容。
解决方案 1:
正如@jonrsharpe在评论中指出的那样,这可以通过以下方式完成typing.Callable
:
from typing import Callable
def my_function(func: Callable):
注意: Callable
本身相当于Callable[..., Any]
。 这样的Callable
可以接受任意数量和类型的参数( )并返回任意...
类型的值()。 如果这太不受约束,也可以指定输入参数列表的类型和返回类型。Any
例如,给定:
def sum(a: int, b: int) -> int: return a+b
对应的注释为:
Callable[[int, int], int]
也就是说,参数在外部订阅中带有下标,返回类型作为外部订阅中的第二个元素。一般来说:
Callable[[ParamType1, ParamType2, ..., ParamTypeN], ReturnType]
解决方案 2:
我想要此功能的具体用例是在 PyCharm 中启用丰富的代码完成。使用Callable
不会导致 PyCharm 建议该对象具有.__code__
属性,而这正是我想要的。
我偶然发现了这个types
模块并且......
from types import FunctionType
允许我用它来注释一个对象FunctionType
,瞧,PyCharm 现在提示我的对象有一个.__code__
属性。
OP 并不清楚为什么这种类型提示对他们有用。Callable 当然适用于任何实现,.__call__()
但为了进一步澄清接口,我提交了types
模块。
遗憾的是,Python 需要两个非常相似的模块。
解决方案 3:
另一个值得注意的有趣点是,你可以使用内置函数type()
来获取内置函数的类型并使用它。因此你可以
def f(my_function: type(abs)) -> int:
return my_function(100)
或者类似这样的东西
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD