如何在Python函数中使用局部变量?

2024-09-30 16:36:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还比较陌生,但很快就掌握了大多数概念。你知道吗

我编写了以下函数来获取数组的返回数字:

def getret(X):                                                                                                                          
    if X:                                                                       
        A = X                                                                   
        B = X                                                                   
        print(A)                                                                
        print(B)                                                                
        A.insert(0, 0)                                                          
        print(A)                                                                
        B.insert(len(X), 0)                                                     
        print(B)                                                                
        Z = []                                                                  
        for i in range(len(A)):                                                 
            Z.append(B[i]-A[i])                                                 
        print(Z)                                                                
        return Z                                                                
    return False   

我的问题是我希望变量A和B被完全独立地处理,但是它们似乎是相互关联的,因为它们都指向变量X

当我将这个函数输入数组[1,3,2,5,4]时,结果输出如下:

[1,3,2,5,4]     # print A = X
[1,3,2,5,4]     # print B = X
[0,1,3,2,5,4]   # print A.insert(0, 0)
[0,1,3,2,5,4,0] # print B.insert(len(X), 0)
[0,0,0,0,0,0,0] # print list B - A

当我修改A和B时,我实际上改变了它们的参考X,而不是仅仅改变存储的变量。你知道吗

在JavaScript中,我可以通过将A和B设置为X的局部变量来轻松地解决这个问题,但是在Python中我找不到这样简洁的替代方法。你知道吗

我正在使用PyCharm和python3.4。你知道吗


Tags: 函数in概念forlenreturnifdef
1条回答
网友
1楼 · 发布于 2024-09-30 16:36:20

如果需要独立列表,则无需复制X

A = X[:]

或者,如果列表中的元素比数字更复杂(在您的示例中不是这样),则可以使用深度副本:

from copy import deepcopy
A = deepcopy(X)

否则你只会得到同一个列表的新引用。你知道吗

相关问题 更多 >