我刚刚看到了以下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)
默认情况下是否返回None?是否等于return(None)
是,请参见docs:如果存在表达式列表,则将对其求值,否则为None替换。
如果执行了第一次返回,将函数inner()自动结束并第二次返回就任其独处?
是
如果您不想返回任何内容,您甚至可以完全删除return语句:
def smart_check(f):
def inner(a,b):
if b != 0:
return f(a,b)
print("illegit: b =", b)
return(inner)
由于打印不返回任何内容,您甚至可以将此功能重写为:
def smart_check(f):
def inner(a,b):
return f(a,b) if b!=0 else print("illegit: b =", b)
return(inner)