我不断收到 NameError:名称'max_col'未定义。经过一些研究,我意识到,如果我想在函数内部使用max_col作为全局变量,则必须以这种方式声明它。但是,即使进行了修改,它似乎也不起作用。
敲打一个多小时后,我将变量max_col放入数组中,将其弹出到explorer_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)
答案 0 :(得分:3)
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。