gpt4 book ai didi

python - 键入一个带有可调用的函数

转载 作者:行者123 更新时间:2023-12-04 11:59:47 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to define a type for a function (arguments and return type) with a predefined type?

(1 个回答)


上个月关闭。




我有很多具有相同签名的函数,比如 (int, int) -> int .
有没有办法用 Callable 输入这些函数(或其他)以避免为这些函数中的每一个指定参数类型和返回类型?我想做类似的事情(但显然失败了):

from typing import Callable

f: Callable[[int, int], int]
def f(x, y): # with the previous line, this is equivalent to 'def f(x: int, y: int) -> int:'
...
运行 mypy 结果:
file.py:4: error: Name "f" already defined on line 3
Found 1 error in 1 file (checked 1 source file)

最佳答案

也许有一个更优雅的解决方案。不推荐,但您可以设置 <function>.__annotations__ .更多相关信息 here .

from typing import get_type_hints

callable_int_annotations = {"x": int, "y": int, "return": int}

def f_with_hint(x: int, y: int) -> int:
return x + y

def f_without_hint(x, y):
return x + y

print(f"Before {get_type_hints(f_with_hint)=}")
print(f"Before {get_type_hints(f_without_hint)=}")

f_without_hint.__annotations__ = callable_int_annotations

print(f"After {get_type_hints(f_with_hint)=}")
print(f"After {get_type_hints(f_without_hint)=}")
Before get_type_hints(f_with_hint)={'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>}
Before get_type_hints(f_without_hint)={}
After get_type_hints(f_with_hint)={'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>}
After get_type_hints(f_without_hint)={'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>}

关于python - 键入一个带有可调用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69029402/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com