python-3.x typehints -> None或留空

jgwigjjp  于 2023-06-25  发布在  Python
关注(0)|答案(1)|浏览(94)

使用python 3,可以选择使用typehints。
如果一个函数返回None,应该加上这个,还是留空?

def hint(p: str) -> None:
    ...

def no_hint(p: str):
    ...

哪个PEP解决了这个问题?

sgtfey8w

sgtfey8w1#

  • 显式 * 并始终为返回None的函数包含-> None

这是因为,否则,对于不带参数的函数 *,类型检查器将假设您根本没有使用类型提示。例如,def foo():是否会返回None,或者它只是不提示类型?
PEP 484 - Type Hints间接地解决了这个问题:
注意,__init__的返回类型应该用-> None注解。原因很微妙。如果__init__假设返回注解为-> None,这是否意味着一个无参数、无注解的__init__方法仍然应该进行类型检查?我们不想让这种情况变得模棱两可,也不想在异常中引入一个异常,我们只说__init__应该有一个返回注解;因此默认行为与其它方法相同。

相关问题