我已经学习Python大约一个星期了,下面是问题:
码
def Foo():
pass
def Bar():
return None
用法
a = Foo()
print(a)
# None
b = Bar()
print(b)
# None
问题:1.为什么我们已经通过返回无时需要通过?有没有返回None无法处理但可以通过的场景?
在像Python这样的语言中,您要评估两种类型的“事物”:表达式和语句。表达式是,好,表达式,评估到一些东西。例如1
,,1+1
或f(x)
都是所有表达式,对某个值求值。
相比之下,语句不是“返回”任何东西,而是“作用于环境”。例如,x=3
将变量x
设置为value 3
。def f(x): return x + 1
将的值设置f
为函数。这不会“评估”任何东西,而是会修改当前评估事物的环境。
考虑到这一点,有时您需要一个空语句。出于语法上的原因,Python中有一些地方需要声明,但是如果您不希望在此处发生任何事情,则可能要表达发生的事情恰好是“什么都没有”。一种方法是求值表达式,而不执行任何操作:
def f():
1
但一个偶然一瞥,可能意味着这个函数返回 1
:不是,你可以使用pass
如明确地指出:“什么都不做”:
def f():
pass
现在,还有另一个问题:前面提到过,这f(x)
是一个表达式。但是在上面的两个示例中,我没有添加任何内容return
,那么这些评估结果如何?答案是:None
除非另有说明,否则函数调用将返回(即计算为)。所以:
def f():
pass
def g(x):
if x > 2:
return x
def h():
return None
f() # None
g(3) # 3 -> we explicitely say `return x`
g(1) # None -> no return specified for that path
h() # None -> we explicitely say `return None`
其他人提到过pass可以在其他地方使用(例如,在空类中,在异常处理中)。这样做的原因是所有这些都需要一些语句,并pass
允许指定一个空的语句。这与函数返回(None
除非另有指定)的事实相结合,导致您观察到的行为(尽管它们在概念上有所不同)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句