2024-04-26 22:08:55 发布
网友
下面两段代码之间有什么功能上的区别吗?我主要关心函数的调用顺序。函数是否在第一个if语句中按顺序执行?你知道吗
if
首先
if func1() and func2() and func3() and func4(): do stuff
其次
if func1(): if func2(): if func3(): if func4(): do stuff
是的,Python从左到右计算表达式。函数将按相同的顺序调用。从reference documentation:
Python evaluates expressions from left to right.
此外,如果func1()在使用and和嵌套if表达式时返回假值,则不会调用func2()。引用boolean operations documentation:
func1()
and
func2()
The expression x and y first evaluates x; if x is false, its value is returned; otherwise, y is evaluated and the resulting value is returned.
x and y
x
y
因为在表达式func1() and func2()中,如果func1()返回一个假值,则func2()将不会被计算,因此func2()根本不会被调用。你知道吗
func1() and func2()
您可以在这里使用第三种方法,使用^{} function:
functions = (func1, func2, func3, func4) if all(f() for f in functions):
只要前一个函数返回一个真值并按顺序调用函数,它就只调用函数。你知道吗
all()方法确实要求func1、func2、func3和func4都是在调用all()之前实际定义的,而嵌套的if或and表达式方法只要求在前面的函数返回真值时定义函数。你知道吗
all()
func1
func2
func3
func4
是的,Python从左到右计算表达式。函数将按相同的顺序调用。从reference documentation:
此外,如果
func1()
在使用and
和嵌套if
表达式时返回假值,则不会调用func2()
。引用boolean operations documentation:因为在表达式
func1() and func2()
中,如果func1()
返回一个假值,则func2()
将不会被计算,因此func2()
根本不会被调用。你知道吗您可以在这里使用第三种方法,使用^{} function :
只要前一个函数返回一个真值并按顺序调用函数,它就只调用函数。你知道吗
all()
方法确实要求func1
、func2
、func3
和func4
都是在调用all()
之前实际定义的,而嵌套的if
或and
表达式方法只要求在前面的函数返回真值时定义函数。你知道吗相关问题 更多 >
编程相关推荐