我正在构建一个minimax函数,并且需要对每次迭代进行一些检查。我希望迭代能够像possilbe一样有效,从而能够增加搜索深度,因此我想知道Python if语句在for循环中如何工作。让我给你一个简化的例子:
# Example 1
def test(x_start, y_start):
for xdir, ydir in [[1, -1], [1, 1], [-1, 1], [-1, -1]]:
x, y = x_start, y_start
x += xdir
y += ydir
if not is_on_board(x, y) and board[x][y].type == 'full':
continue
# Example 2
def test(x_start, y_start):
for xdir, ydir in [[1, -1], [1, 1], [-1, 1], [-1, -1]]:
x, y = x_start, y_start
x += xdir
y += ydir
if not is_on_board(x, y):
if not board[x][y].type == 'full':
continue
示例2的效率更高,因为在某些情况下,基于该职位不在董事会上并且无需对董事会类型进行额外检查,它会跳过第一条if语句?
在我的真实代码中,有更多的带有功能和变量检查的and语句,这可能会比较耗时。因此,我想知道是否像示例2中那样将and语句分解为更多if语句是否更有效,或者这是否真的无关紧要?一般来说。
[包括Python在内的大多数编程语言都会“短路”布尔逻辑检查-这意味着一旦知道真值,它们就不会继续评估。多个if语句或和/或语句之间的差异可以忽略不计,您应该考虑哪个更易读;另一方面,如果其中一些检查的价格更高或信息量更大,检查的顺序可能会有所不同。