3 回答

TA贡献1815条经验 获得超13个赞
问题是您忽略了以下的返回值create_grid
:
grid = util.create_grid(grid)
鉴于您grid
在重新分配它之前从不使用,将任何对象作为参数传递会更简单(函数无论如何都会忽略它):
if test == 0: grid = util.create_grid([])

TA贡献1856条经验 获得超11个赞
如果所有文件都在您的控制之下并且您可以修改它们,我会看到两个问题:
此方法中的参数
grid
从未使用过。它应该被删除def create_grid(grid): grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] return grid
永远不会使用返回值。它应该是
grid = util.create_grid()
如果你不能修改test_run()
,因为那是失控的,你需要找到一种方法来修改数组而无需赋值。
在这种情况下,从
grid.clear()
以确保数组为空。之后使用添加值
grid.append()
或者
grif.extend()

TA贡献2012条经验 获得超12个赞
在你的create_grid()功能中,grid变量只在函数的范围内,所以它只会在你的函数中编辑你的参数。
例子:
>>> grid = []
>>> def create_grid(grid):
... grid = [1, 2, 3]
...
>>> create_grid(grid)
>>> print(grid)
[]
在这里你可以看到你的grid变量没有改变。
你应该做的是在你改变它之后返回你的网格(你已经这样做了)并将grid你的函数中的变量定义run_test()为函数的返回值,如下所示:
>>> grid = []
>>> def create_grid(grid):
... grid = [1, 2, 3]
... return grid
...
>>> grid = create_grid(grid)
>>> print(grid)
[1, 2, 3]
这里你的grid变量确实改变了。
请注意,在这里您不需要将网格作为参数传递,因为您无论如何都在函数中重新定义它。
所以你的代码应该是这样的:
def create_grid():
grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
return grid
grid = util.create_grid()
如果您想了解有关范围的更多信息,请参阅此链接。
添加回答
举报