【发布时间】:2012-08-15 17:59:22
【问题描述】:
我有两个代码用于将参数传递给 Python 中的函数。 1-
def changeme( mylist ):
mylist.append([1,2,3,4]);
print "Values inside the function: ", mylist
return
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist
2-
def changeme( mylist ):
mylist = [1,2,3,4];
print "Values inside the function: ", mylist
return
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist
为什么在第一个代码中 mylist 是通过引用传递,而在第二个代码中是通过值传递?
【问题讨论】:
-
他们都通过了相同的。不同之处在于您在名称被传递后对其执行的操作。
-
mylist 总是作为参考传递。
-
哇,我真的很讨厌“Python 没有变量”的模因……至少,说,“Python 没有与 C 变量一样工作的变量。”更好的描述是,“在 C 中,变量是容器。在 Python 中,变量是标签。”
-
@Ned:我的回答和我链接的页面都没有这句话。取而代之的是:«虽然我们通常在 Python 中也提到“变量”(因为它是常用术语),但我们真正的意思是“名称”或“标识符”。在 Python 中,“变量”是值的名称标签,而不是带标签的框。» 这在很大程度上同意您的看法。在解决特定于命名、绑定在 Python 中的工作方式的问题时,语言参考使用的特定术语可能会有所帮助。