繁体   English   中英

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

[英]Why can't I use the max() function in a global variable in Python?

我不断得到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次。

另请参阅此处以获取更多信息和示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM