【发布时间】:2020-05-24 05:51:17
【问题描述】:
刚刚看到下面的Python代码,对第一个return有点迷糊。它是否默认返回None?是否等同于return(None)?如果第一个return被执行,函数inner()会自动结束,而第二个return会被不管吗?
def smart_check(f):
def inner(a,b):
if b==0:
print("illegit: b =", b)
return # the first return
return(f(a,b))
return(inner)
@smart_check
def divide(a,b):
return(a/b)
【问题讨论】:
-
单独的
return将退出函数并返回None值。 -
旁白:return 关键字不是函数调用或运算符。额外的括号是多余的,通常不包括在内。当目标是返回一个元组时,它们也可能与/隐藏混淆。
-
@pyOliv 谢谢!这说明白了!顺便说一句,有没有办法退出函数而不返回任何东西?
-
括号在任何版本中都不需要返回。对于 print 和 Python 2,括号是强制性的(因为 print 失去了它的关键字/特殊语句状态)。
-
函数 always 返回 a value 如果它们在没有引发错误的情况下终止(或以其他方式终止 Python)。 None 是一个值,它表示“什么都没有”。这对于“x = f()”是必需的,例如,如果对“f”的调用正常完成,则保证 一个值 将被分配给“x”。有些语言将子例程和函数分开:Python 没有。
标签: python-3.x return return-value return-type nonetype