单独的return是否等于Python 3.8中的return(None)?

问题描述 投票:0回答:1

我刚刚看到了以下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)
python-3.x return return-value return-type nonetype
1个回答
0
投票

默认情况下是否返回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)
© www.soinside.com 2019 - 2024. All rights reserved.