【问题标题】:How can I use local variables in Python functions? [duplicate]如何在 Python 函数中使用局部变量? [复制]
【发布时间】:2015-12-12 20:18:39
【问题描述】:

我对 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 和 Python 3.4。

【问题讨论】:

  • 您应该表明您将如何在 JS 中执行此操作的意思。 AFAIK 执行 var A = X; var B = X 将得到与此 Python 代码完全相同的结果。
  • 你是对的。我能够在 JavaScript 中做到这一点,但这不是因为使用了“var”。道歉。

标签: python arrays function variables


【解决方案1】:

如果您想要一个独立的列表,则无需复制X

A = X[:]

如果列表中的元素比数字更复杂,甚至是深拷贝(在您的示例中并非如此):

from copy import deepcopy
A = deepcopy(X)

否则,您只会获得对同一列表的新引用。

【讨论】:

  • 这很完美!谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多