Python 混淆函数引用

标签 python list reference

任何人都可以向我解释为什么 ab 下的两个函数表现不同。函数 a 在本地更改 namesb 更改实际对象。

我在哪里可以找到此行为的正确文档?

def a(names):
    names = ['Fred', 'George', 'Bill']

def b(names):
    names.append('Bill')

first_names = ['Fred', 'George']

print "before calling any function",first_names
a(first_names)
print "after calling a",first_names
b(first_names)
print "after calling b",first_names

输出:

before calling any function ['Fred', 'George']
after calling a ['Fred', 'George']
after calling b ['Fred', 'George', 'Bill']

最佳答案

在函数内部给参数赋值不影响传递的参数。它只是使局部变量引用新对象。

同时,list.append 就地修改列表。

如果你想改变函数内部的列表,你可以使用切片赋值:

def a(names):
    names[:] = ['Fred', 'George', 'Bill']

关于Python 混淆函数引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25226421/

相关文章:

list - 解析和替换 kotlin 中的对象列表

c++ - 从 const 成员函数返回引用数组

python - 使用 Gekko 的 ARX 模型的 MPC

python - 如何正确处理和保留系统关闭(和 SIGTERM)以完成其在 Python 中的工作?

python - 从 python 脚本中启动并行进程?

list - data.frame 行到列表

c# - 如何从分号分隔的列表<string>中删除逗号字符?

python - 删除列表中提到的图像

PHP在foreach中使用当前函数

Python:如果静态类变量获得不同的函数引用指针,如何修复?