Python计算条件语句的每个条件

2024-04-26 03:58:13 发布

您现在位置:Python中文网/ 问答频道 /正文

在以下代码中,如果a()返回1,则不计算b()

if (a() or b()):
    # do stuff

如何确保语句中的所有函数都将被求值,而不管它们的结果如何? 在一些语言中,他们用|||来区分这两种可能性。Python中有什么等价的东西吗? 对and语句来说也是这个问题


Tags: orand函数代码语言if语句可能性
3条回答

您可以使用任何接受函数列表的方法,例如

if any([a(), b()]):
    ...

如果您需要运行这两个函数,那么最好是显式地并完整地写出来:

x = a()
y = b()

if x or y:
  pass

这清楚地表明,这些呼吁应该是必然发生的。在条件中隐藏这个事实似乎是一个很好的方法,可以在将来忘记这个需求,然后进行重构,最终会咬到你

如果仍然希望or逻辑没有短路,请首先计算所有操作数,然后使用any

if any([a(), b()]):
    ...

在将列表传递给any(如果列表中的任何值是真的,则返回True)之前,必须首先创建列表(意味着将调用函数并返回它们的结果)

但是,请注意,函数应该是纯的,并且不会产生副作用,这样就有必要进行类似的黑客解决方法

相关问题 更多 >