3 回答

TA貢獻1815條經(jīng)驗 獲得超13個贊
問題是您忽略了以下的返回值create_grid
:
grid = util.create_grid(grid)
鑒于您grid
在重新分配它之前從不使用,將任何對象作為參數(shù)傳遞會更簡單(函數(shù)無論如何都會忽略它):
if test == 0: grid = util.create_grid([])

TA貢獻1856條經(jīng)驗 獲得超11個贊
如果所有文件都在您的控制之下并且您可以修改它們,我會看到兩個問題:
此方法中的參數(shù)
grid
從未使用過。它應(yīng)該被刪除def create_grid(grid): grid = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] return grid
永遠不會使用返回值。它應(yīng)該是
grid = util.create_grid()
如果你不能修改test_run()
,因為那是失控的,你需要找到一種方法來修改數(shù)組而無需賦值。
在這種情況下,從
grid.clear()
以確保數(shù)組為空。之后使用添加值
grid.append()
或者
grif.extend()

TA貢獻2012條經(jīng)驗 獲得超12個贊
在你的create_grid()功能中,grid變量只在函數(shù)的范圍內(nèi),所以它只會在你的函數(shù)中編輯你的參數(shù)。
例子:
>>> grid = []
>>> def create_grid(grid):
... grid = [1, 2, 3]
...
>>> create_grid(grid)
>>> print(grid)
[]
在這里你可以看到你的grid變量沒有改變。
你應(yīng)該做的是在你改變它之后返回你的網(wǎng)格(你已經(jīng)這樣做了)并將grid你的函數(shù)中的變量定義run_test()為函數(shù)的返回值,如下所示:
>>> grid = []
>>> def create_grid(grid):
... grid = [1, 2, 3]
... return grid
...
>>> grid = create_grid(grid)
>>> print(grid)
[1, 2, 3]
這里你的grid變量確實改變了。
請注意,在這里您不需要將網(wǎng)格作為參數(shù)傳遞,因為您無論如何都在函數(shù)中重新定義它。
所以你的代碼應(yīng)該是這樣的:
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()
如果您想了解有關(guān)范圍的更多信息,請參閱此鏈接。
添加回答
舉報