Python中函数参数传递问题

这两个图片是老师给的,之间的原理能懂,我觉得两个print()里面都应该是修改之后的啊,第一print为什么是修改之前的,上面不已经对可变列表地址修改了吗,那print(... 这两个图片是老师给的,之间的原理能懂,我觉得两个print()里面都应该是修改之后的啊,第一print为什么是修改之前的,上面不已经对可变列表地址修改了吗,那print()里面也应该是修改后的啊 展开
 我来答
tufeididi007
2018-02-14 · TA获得超过2125个赞
知道大有可为答主
回答量:2698
采纳率:76%
帮助的人:1252万
展开全部

对于可变参数默认是引用传值, 但是不能去修改它的指向, 一旦修改就是按值传递.

# coding=utf-8
def f(a):
    a = [0]
    print(a)

if __name__ == '__main__':
    a = [1, 2, 3]
    f(a)
    print(a)

上面的代码对a重新赋值, 试图改变a的指向, 那么这时的a就是一个新的局部变量, 而非全局变量a

像a[0] = 100, a.append(0)的操作不会触发上述规则, 和你的输出一样

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式