Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在Python 3.8中,“return”单独等同于“return(None)”吗?_Python 3.x_Return_Return Value_Return Type_Nonetype - Fatal编程技术网

Python 3.x 在Python 3.8中,“return”单独等同于“return(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

我刚刚看到了下面的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))
    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没有。