【发布时间】:2013-01-06 09:48:17
【问题描述】:
如果我有一个基于两个或多个条件返回布尔值的函数,Python 会检查每个条件吗?
更具体地说,这是一个理论函数:
def f(x, y):
return x < y and f2(x, y) == 1
如果f2 需要一段时间才能执行,我应该将f 更改为此吗?
def f(x, y):
if x >= y: return False
return f2(x, y) == 1
如果x 大于或等于y 因为and 在前面,Python 会自动返回 False 吗?
两者哪个更快,为什么?
我的问题同样适用于or 语句,如果第一个条件为真,它会继续评估下一个条件吗?
【问题讨论】:
-
这不是关于
if语句,而是关于and和or表达式。 (鉴于您的return声明,您显然已经猜到了。) -
另外,值得知道如何自己测试:写
def f2(x, y): print('f2 ran'),然后调用f(0, 1),看看它是否打印任何东西。 (如果没有,您仍然需要检查文档以确保语言能够保证这一点……但如果确实如此,您就会知道 Python 不会短路。)
标签: python performance if-statement python-2.7 return