Python 3.x 在Python 3.8中,“return”单独等同于“return(None)”吗?
我刚刚看到了下面的Python代码,对于第一次返回我有点困惑。默认情况下是否返回None?它等于零吗?如果执行第一次返回,函数内部是否会自动结束,第二次返回是否会被忽略Python 3.x 在Python 3.8中,“return”单独等同于“return(None)”吗?,python-3.x,return,return-value,return-type,nonetype,Python 3.x,Return,Return Value,Return Type,Nonetype,我刚刚看到了下面的Python代码,对于第一次返回我有点困惑。默认情况下是否返回None?它等于零吗?如果执行第一次返回,函数内部是否会自动结束,第二次返回是否会被忽略 def smart_check(f): def inner(a,b): if b==0: print("illegit: b =", b) return # the first return return(f(a,b)) retu
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)
默认情况下是否返回None?它等于零吗
是,请参阅:如果存在表达式列表,则对其求值,否则不求值
替换
如果执行了第一次返回,函数是否会在内部
自动在那里结束,第二次返回将不受影响
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语句:
def smart_check(f):
def inner(a,b):
if b != 0:
return f(a,b)
print("illegit: b =", b)
return(inner)
因为print不会返回任何内容,所以您甚至可以将此函数重写为
def smart_check(f):
def inner(a,b):
return f(a,b) if b!=0 else print("illegit: b =", b)
return(inner)
单独返回将退出函数并返回None值。旁白:return关键字不是函数调用或运算符。额外的括号是多余的,通常不包括在内。当目标是返回元组时,它们也可能与/hide混淆。@pyOliv谢谢!这是澄清!顺便说一句,有没有办法在不返回任何内容的情况下退出函数?在任何版本中,返回都不需要括号。对于print vs Python 2,括号是必需的,因为print丢失了其关键字/特殊语句状态。如果函数终止而不引发错误或以其他方式终止Python,则函数始终返回一个值。None是表示“nothing”的值。这对于“x=f”是必需的,例如,如果对“f”的调用正常完成,为了保证将一个值分配给“x”。有些语言将子例程和函数分开:Python没有。