为什么函数可以修改调用者感觉到的某些参数,而不能修改其他参数呢?我正在尝试理解Python的可变作用域方法。在这个例子中,为什么是f()能够改变…的价值x,如内心所感知的main()的价值n?def f(n, x): n = 2 x.append(4) print('In f():', n, x)def main(): n = 1 x = [0,1,2,3] print('Before:', n, x) f(n, x) print('After: ', n, x)main()产出:Before: 1 [0, 1, 2, 3]In f(): 2 [0, 1, 2, 3, 4]After: 1 [0, 1, 2, 3, 4]
3 回答
![?](http://img1.sycdn.imooc.com/545861b80001d27c02200220-100-100.jpg)
慕码人2483693
TA贡献1860条经验 获得超9个赞
def f(n, x): # these `n`, `x` have nothing to do with `n` and `x` from main() n = 2 # put `n` label on `2` balloon x.append(4) # call `append` method of whatever object `x` is referring to. print('In f():', n, x) x = [] # put `x` label on `[]` ballon # x = [] has no effect on the original list that is passed into the function
![?](http://img1.sycdn.imooc.com/5458478b0001f01502200220-100-100.jpg)
拉丁的传说
TA贡献1789条经验 获得超8个赞
f
x
n
获取分配的新值。只修改函数内部的引用,而不是修改函数外部的引用。 x
不分配新值:函数内部和外部的引用都不会被修改。相反, x
氏 价值
被修改了。
x
n
n
添加回答
举报
0/150
提交
取消