考虑三个功能:
def my_func1():
print "Hello World"
return None
def my_func2():
print "Hello World"
return
def my_func3():
print "Hello World"
Run Code Online (Sandbox Code Playgroud)
他们似乎都返回无.这些函数的返回值如何表现有什么不同?是否有任何理由更喜欢一个与另一个?
在python 3.x中,通常使用函数的返回类型注释,例如:
def foo() -> str:
return "bar"
Run Code Online (Sandbox Code Playgroud)
"void"类型的正确注释是什么?
我正在考虑3种选择:
def foo() -> None:
None不是一个类型,def foo() -> type(None):
NoneType,def foo():
选项2.对我来说似乎最合乎逻辑,但我已经看到了一些1的实例.
Python的新类型提示功能允许我们输入函数返回的提示None...
def some_func() -> None:
pass
Run Code Online (Sandbox Code Playgroud)
...或者保留未指定的返回类型,PEP规定应该使静态分析器假定任何返回类型都是可能的:
任何没有注释的函数都应该被视为具有最普遍的类型
但是,我应该如何键入一个函数永远不会返回的提示?例如,键入提示这两个函数的返回值的正确方法是什么?
def loop_forever():
while True:
print('This function never returns because it loops forever')
def always_explode():
raise Exception('This function never returns because it always raises')
Run Code Online (Sandbox Code Playgroud)
-> None在这些情况下,指定或保留未指定的返回类型似乎都不正确.