当前位置:嗨网首页>书籍在线阅读

30-传递引用

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

4.7.2 传递引用

要理解参数如何传递给函数,引用就特别重要。当函数被调用时,参数的值被复制给变元。对于列表(以及字典,我将在下一章中讨论),这意味着变元得到的是引用的复制。要了解这导致的后果,请打开一个新的文件编辑器窗口,输入以下代码,并保存为passingReference.py:

def eggs(someParameter):
    someParameter.append('Hello')
spam = [1, 2, 3]
eggs(spam)
print(spam)

请注意,当 eggs() 函数被调用时,没有使用返回值来为 spam 变量赋新值。相反,它直接就地修改了该列表。在运行时,该程序产生的输出结果如下:

 [1, 2, 3, 'Hello']

尽管 spamsomeParameter 变量包含了不同的引用,但它们都指向相同的列表。这就是为什么函数内的 append('Hello') 方法调用在函数调用返回后,仍然会对该列表产生影响。

请记住这种行为:如果在Python处理列表和字典变量时采用这种方式,可能会导致令人困惑的bug。