typehints - >无或留空

Dan*_*Lee 7 python python-3.x typehints

使用python 3,可以选择使用typehints.

我的问题是,如果一个函数返回None,应该添加一个,还是留空.

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

def no_hint(p:str):
    pass
Run Code Online (Sandbox Code Playgroud)

哪个PEP解决了这个问题?

Mar*_*ers 10

要明确并始终包含-> None返回的函数None

这是因为否则,对于不接受参数的函数,类型检查器将假定您根本不使用类型提示.例如,是def foo():要返回None,还是只是没有提示?

PEP 484 - 类型提示间接解决了这个问题:

请注意,返回类型__init__应该注释-> None.原因很微妙.如果__init__假设返回注释-> None,那是否意味着__init__仍应对无参数,未注释的方法进行类型检查?我们只是说__init__应该有一个返回注释,而不是让这个含糊不清或引入异常的例外; 因此,默认行为与其他方法相同.

  • @Chris_Rands:deceze 说了什么;如果你只用 `-> None` 注释没有参数的函数,并且不打扰有参数的函数,那么你只会为失败做准备,因为你*会*忘记应用注释。 (2认同)