考虑下面四个函数:
def my_func1():
print("Hello python1")
return None
def my_func2():
print("Hello python2")
return
def my_func3():
print("Hello python3")
return ()
def my_func4():
print("Hello python4")
下面是运行结果:
运行结果
除了第三个函数是返回(),其余三个函数均返回一个空值。虽然看上去它们没啥差别,但是实际上,每一个函数的返回值都花费了一个时间和空间。下面简单介绍一些这些return方法在何时使用:
Using return None
表示确实需要返回一个值以便接下来的使用,只不过它返回None
罢了。如果函数中没有其他可能的返回值,return None
将不会被使用。
return None is never used if there are no other possible return values from the function.
举个例子,如果一个人有母亲我们就用get_mother()函数返回他的母亲,如果这是个孤儿(假设这是个人,而非动物之类),我们就返回None:
def get_mother(person):
if is_human(person):
return person.mother
else:
return None
就是给人们一个视觉上的需要
Using return
与在循环loop
中使用break
是一样的道理。
即返回值并不影响你的程序,你只是希望能够快点退出这个程序罢了。
举个例子,有15个犯人,我们已经知道其中一个有刀。我们就循环遍历他们每一个人检查是否有刀。当我们检查到了有刀的,就可以不用再继续检查了。如果我们到最后都没有检查到谁有刀,就得发出一个警告。我们可以选择很多中方法去完成这个任务,但是return
是最好的方法了:
def find_prisoner_with_knife(prisoners):
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition()
return # no need to check rest of the prisoners nor raise an alert
raise_alert()
你不需要给这个返回值赋一个变量:var = find_prisoner_with_knife()
,因为这个返回并不意味着捕获
Using no return at all
这同样会返回一个None
,但是这个值并不会被使用或捕获。仅仅意味着这个函数正常结束罢了。这跟在C++等语言中void function()
的返回是一样的。
比如我们给某个人设定他的母亲,然后这个函数的功能就完成了,并不需要什么其他额外的返回值:
def set_mother(person, mother):
if is_human(person):
person.mother = mother
总结就是,他们都是一样的意思,只不过视觉上和意义上不同罢了,在计算机看来都只是执行了下面几条命令而已:
0 LOAD_CONST 1 ('Hello World')
3 PRINT_ITEM
4 PRINT_NEWLINE
5 LOAD_CONST 0 (None)
8 RETURN_VALUE
网友评论