2024-04-26 03:58:13 发布
网友
在以下代码中,如果a()返回1,则不计算b():
a()
b()
if (a() or b()): # do stuff
如何确保语句中的所有函数都将被求值,而不管它们的结果如何? 在一些语言中,他们用|和||来区分这两种可能性。Python中有什么等价的东西吗? 对and语句来说也是这个问题
|
||
and
您可以使用任何接受函数列表的方法,例如
if any([a(), b()]): ...
如果您需要运行这两个函数,那么最好是显式地并完整地写出来:
x = a() y = b() if x or y: pass
这清楚地表明,这些呼吁应该是必然发生的。在条件中隐藏这个事实似乎是一个很好的方法,可以在将来忘记这个需求,然后进行重构,最终会咬到你
如果仍然希望or逻辑没有短路,请首先计算所有操作数,然后使用any:
or
any
在将列表传递给any(如果列表中的任何值是真的,则返回True)之前,必须首先创建列表(意味着将调用函数并返回它们的结果)
True
但是,请注意,函数应该是纯的,并且不会产生副作用,这样就有必要进行类似的黑客解决方法
您可以使用任何接受函数列表的方法,例如
如果您需要运行这两个函数,那么最好是显式地并完整地写出来:
这清楚地表明,这些呼吁应该是必然发生的。在条件中隐藏这个事实似乎是一个很好的方法,可以在将来忘记这个需求,然后进行重构,最终会咬到你
如果仍然希望
or
逻辑没有短路,请首先计算所有操作数,然后使用any
:在将列表传递给
any
(如果列表中的任何值是真的,则返回True
)之前,必须首先创建列表(意味着将调用函数并返回它们的结果)但是,请注意,函数应该是纯的,并且不会产生副作用,这样就有必要进行类似的黑客解决方法
相关问题 更多 >
编程相关推荐