2024-05-21 19:20:56 发布
网友
我已经学习python一周了,下面是问题:
代码
def Foo(): pass def Bar(): return None
用法
a = Foo() print(a) # None b = Bar() print(b) # None
问题: 一。当我们已经有return None时,为什么需要pass?是否存在return None无法处理但pass可以处理的情况?
在像Python这样的语言中,有两种类型的“things”要求值:表达式和语句。表达式是,嗯,表达式,它计算到的值。例如,1,1+1,或者f(x)都是表达式,对某些东西求值。
1
1+1
f(x)
相比之下,语句并没有“返回”任何东西,相反,它们“作用于环境”。例如,x=3将变量x设置为值3。def f(x): return x + 1将f的值设置为函数。它不会对任何东西进行“求值”,它会修改当前的求值环境。
x=3
x
3
def f(x): return x + 1
f
考虑到这一点,有时需要一个空语句。出于语法上的原因,Python中有一些地方需要语句,但是如果您不希望这里发生任何事情,那么您可能希望表示发生的事情正是“没有”。一种方法是对表达式求值,而不对其执行任何操作:
def f(): 1
但是随便看一眼,可能会发现这个函数返回1:相反,您可以使用pass作为的显式声明:“不要做任何事情”:
pass
def f(): pass
现在,还有一个问题:我前面提到过f(x)是一个表达式。但是在上面的两个例子中,我没有放任何return,那么这些evalute用于什么呢?答案是:除非另有说明,否则函数调用返回(即计算结果为)None。所以:
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的事实(除非另有说明)相结合,会导致您观察到的行为(尽管它们在概念上不同)。
pass是一个“空”命令,但是return会停止函数/方法。
示例:
def func(): do_something() #executed pass do_something_else() #also executed
但是:
def func2(): do_something() #executed return None do_something_else() #NOT executed
在第二种情况下,return None是:“停止函数并返回None”。 但是pass就像“转到下一行”
return None
应回答两个问题的示例:
Pass可用于异常处理:
try: something() except: pass # does not return this_still_executes()
Pass可用于声明没有任何新元素的类:
class CustomError(Exception): pass
在像Python这样的语言中,有两种类型的“things”要求值:表达式和语句。表达式是,嗯,表达式,它计算到的值。例如,
1
,1+1
,或者f(x)
都是表达式,对某些东西求值。相比之下,语句并没有“返回”任何东西,相反,它们“作用于环境”。例如,
x=3
将变量x
设置为值3
。def f(x): return x + 1
将f
的值设置为函数。它不会对任何东西进行“求值”,它会修改当前的求值环境。考虑到这一点,有时需要一个空语句。出于语法上的原因,Python中有一些地方需要语句,但是如果您不希望这里发生任何事情,那么您可能希望表示发生的事情正是“没有”。一种方法是对表达式求值,而不对其执行任何操作:
但是随便看一眼,可能会发现这个函数返回
1
:相反,您可以使用pass
作为的显式声明:“不要做任何事情”:现在,还有一个问题:我前面提到过
f(x)
是一个表达式。但是在上面的两个例子中,我没有放任何return
,那么这些evalute用于什么呢?答案是:除非另有说明,否则函数调用返回(即计算结果为)None
。所以:其他人提到pass可以在其他地方使用(例如,在空类中,在异常处理中…)。原因是所有这些都需要一些语句,并且
pass
允许指定一个空语句。这与函数返回None
的事实(除非另有说明)相结合,会导致您观察到的行为(尽管它们在概念上不同)。pass
是一个“空”命令,但是return
会停止函数/方法。示例:
但是:
在第二种情况下,
return None
是:“停止函数并返回None”。 但是pass
就像“转到下一行”应回答两个问题的示例:
Pass可用于异常处理:
Pass可用于声明没有任何新元素的类:
相关问题 更多 >
编程相关推荐