gpt4 book ai didi

python - 为什么不能在 Python 的全局变量中使用 max() 函数?

转载 作者:行者123 更新时间:2023-11-30 22:11:42 25 4
gpt4 key购买 nike

我不断收到NameError:名称'max_col'未定义。经过一些研究,我意识到如果我想在函数内使用 max_col 作为全局变量,我必须这样声明它。然而,即使修改后,它似乎也不起作用。

在敲了一个多小时后,我将变量 max_col 放入一个数组中,将其弹出到 explore_color 中,然后使用 max。由于某种有趣的原因,这似乎有效。有人知道我在这里缺少什么吗?为什么我不能在全局变量中使用 max 函数?

def max_area(grid):

max_col = float('-inf')

def explore_color(color, row, col, size):

grid[row][col] = float('inf')
global max_col
max_col = max(max_col, size)

directions = [(-1,0), (1,0), (0,1), (0,-1)]
for dir in directions:
next_x, next_y = row + dir[0], col + dir[1]
if next_x >= 0 and next_x < len(grid) and next_y >= 0 and next_y < len(grid[0]) and grid[next_x][next_y] == color:
explore_color(color, next_x, next_y, size + 1)

for row in range(len(arr)):
for col in range(len(arr[0])):
if grid[row][col] != float('inf'):
explore_color(grid[row][col], row, col, 1)

最佳答案

global 在这里不起作用,因为 max_col 不在全局范围内;这只是“一个范围”。尝试使用 nonlocal(仅限 Python 3)。最小示例:

def outer():
foo = 1
def inner():
nonlocal foo
foo = max(foo, 10)
print("in inner", foo)
inner()
print("in outer", foo)
outer()

这两次都会打印10

另请参阅here了解更多信息和示例。

关于python - 为什么不能在 Python 的全局变量中使用 max() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51337842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com