Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
全局/内部变量冲突?(python)_Python_Variables - Fatal编程技术网

全局/内部变量冲突?(python)

全局/内部变量冲突?(python),python,variables,Python,Variables,很抱歉问了这个愚蠢的问题,我是个新手程序员。但是谁能告诉我为什么下面的程序会这样 def lol(a): a=[] a.append(1) return a 现在当我这么做的时候 k = [2, 3] lol(k) 它返回1,但k仍然不变?为什么? 非常感谢 在lola中,行a=[]将a绑定到一个新列表。在这一行之后,a不再与k绑定到同一个列表。因此,您在函数中实际修改的是一个新列表,而不是在参数中收到的列表。欲了解更多信息 如果希望k为[1],那么可以这样写: de

很抱歉问了这个愚蠢的问题,我是个新手程序员。但是谁能告诉我为什么下面的程序会这样

def lol(a):
    a=[]
    a.append(1)
    return a
现在当我这么做的时候

k = [2, 3]
lol(k)
它返回1,但k仍然不变?为什么?

非常感谢

在lola中,行a=[]将a绑定到一个新列表。在这一行之后,a不再与k绑定到同一个列表。因此,您在函数中实际修改的是一个新列表,而不是在参数中收到的列表。欲了解更多信息

如果希望k为[1],那么可以这样写:

def lol(a):
    a[:] = [1]
    return a

k = [2, 3]
lol(k) # now k is equal to [1]
在lola中,行a=[]将a绑定到一个新列表。在这一行之后,a不再与k绑定到同一个列表。因此,您在函数中实际修改的是一个新列表,而不是在参数中收到的列表。欲了解更多信息

如果希望k为[1],那么可以这样写:

def lol(a):
    a[:] = [1]
    return a

k = [2, 3]
lol(k) # now k is equal to [1]

检查内联注释

def lol(a): # a and k are pointing to same memory location
    a=[] # Now, new list is created, pointing to different memory address. 
    a.append(1)
return a # returning new list 

k = [2, 3]  # New list k is created
lol(k)

如果您打印k,您将得到[2,3]。lol根本没有更改它。

检查内联注释

def lol(a): # a and k are pointing to same memory location
    a=[] # Now, new list is created, pointing to different memory address. 
    a.append(1)
return a # returning new list 

k = [2, 3]  # New list k is created
lol(k)
如果您打印k,您将得到[2,3]。lol根本没有改变它