gpt4 book ai didi

python - 有没有更好的方法来使用 Python 的 typing 模块为复合类型创建类型别名?

转载 作者:太空宇宙 更新时间:2023-11-04 00:02:12 24 4
gpt4 key购买 nike

<分区>

我有一个带有一个参数的函数,它应该将 intNone 作为参数。有几种方法可以为这种复合类型创建类型别名:

# test.py
import typing

IntOrNone_1 = typing.TypeVar('IntOrNone_1', int, None)
IntOrNone_2 = typing.Union[int, None]


def my_func1(xyz: IntOrNone_1):
return xyz

def my_func2(xyz: IntOrNone_2):
return xyz


my_func1(12)
my_func1(None)
my_func1(13.7)
my_func1('str')

my_func2(12)
my_func2(None)
my_func2(13.7)
my_func2('str')

这两种方法都做了我期望的事情,然而,相应的mypy错误略有不同,但基本上具有相同的含义。

test.py:14: error: Value of type variable "IntOrNone_1" of "my_func1" cannot be "float"

test.py:15: error: Value of type variable "IntOrNone_1" of "my_func1" cannot be "str"

test.py:19: error: Argument 1 to "my_func2" has incompatible type "float"; expected "Optional[int]"

test.py:20: error: Argument 1 to "my_func2" has incompatible type "str"; expected "Optional[int]"

我倾向于使用第二种方法,因为它还会报告导致错误的参数。

这两种方法是否确实如我所想的那样等效,还是其中一种更受青睐?

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