使用python 3,可以选择使用typehints。如果一个函数返回None,应该加上这个,还是留空?即
def hint(p: str) -> None: ... def no_hint(p: str): ...
哪个PEP解决了这个问题?
sgtfey8w1#
None
-> None
这是因为,否则,对于不带参数的函数 *,类型检查器将假设您根本没有使用类型提示。例如,def foo():是否会返回None,或者它只是不提示类型?PEP 484 - Type Hints间接地解决了这个问题:注意,__init__的返回类型应该用-> None注解。原因很微妙。如果__init__假设返回注解为-> None,这是否意味着一个无参数、无注解的__init__方法仍然应该进行类型检查?我们不想让这种情况变得模棱两可,也不想在异常中引入一个异常,我们只说__init__应该有一个返回注解;因此默认行为与其它方法相同。
def foo():
__init__
1条答案
按热度按时间sgtfey8w1#
None
的函数包含-> None
这是因为,否则,对于不带参数的函数 *,类型检查器将假设您根本没有使用类型提示。例如,
def foo():
是否会返回None
,或者它只是不提示类型?PEP 484 - Type Hints间接地解决了这个问题:
注意,
__init__
的返回类型应该用-> None
注解。原因很微妙。如果__init__
假设返回注解为-> None
,这是否意味着一个无参数、无注解的__init__
方法仍然应该进行类型检查?我们不想让这种情况变得模棱两可,也不想在异常中引入一个异常,我们只说__init__
应该有一个返回注解;因此默认行为与其它方法相同。