更新Python函数中变量值的正确方法



下面的程序不会修改变量myMatrix:的原始值

def transpos(matrixx: list):
newMatrix = [[matrixx[j][i] for j in range(len(matrixx))] for i in range(len(matrixx[0]))]
myMatrix = newMatrix
myMatrix = [[1, 2], [3, 4]]
transpos(myMatrix)
print(myMatrix)

解决这个问题的正确方法是什么?

返回新列表并将其分配给myMatrix。

def transpos(matrixx: list):
newMatrix = [[matrixx[j][i] for j in range(len(matrixx))] for i in range(len(matrixx[0]))]
return newMatrix
myMatrix = [[1, 2], [3, 4]]
myMatrix = transpos(myMatrix)
print(myMatrix)

使用global关键字

一个解决方案是使用如下全局关键字:

def transpos(matrixx: list):
global myMatrix    # <--- 'global' give a reference to myMatrix inside
# the function transpos
newMatrix = [[matrixx[j][i] for j in range(len(matrixx))] for i in range(len(matrixx[0]))]
myMatrix = newMatrix
myMatrix = [[1, 2], [3, 4]]
transpos(myMatrix)
print(myMatrix)

最新更新