考虑以下 Python 代码,如果运行结束,命令行中的运行结果是什么?
Posted lvmenghui0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了考虑以下 Python 代码,如果运行结束,命令行中的运行结果是什么?相关的知识,希望对你有一定的参考价值。
1 1. l = [] 2 2. for i in xrange(10): 3 3. l.append({‘num’:i}) 4 4. print l
1 1. l = [] 2 2. a = {‘num’:0} 3 3. for i in xrange(10): 4 4. a[‘num’] = i 5 5. l.append(a) 6 6. print l
以上两段代码的运行结果是否相同,如果不相同,原因是什么?
上方代码的结果:
1 1. [{‘num’:0},{‘num’:1},{‘num’:2},{‘num’:3},{‘num’:4},{‘num’:5},{‘num’:6},{‘num’:7},{‘num’:8}, 2 {‘num’:9}]
下方代码结果:
1 1. [{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9}, 2 {‘num’:9}]
那么原因来了:
原因是:字典是可变对象,在下方的 l.append(a)的操作中是把字典 a 的引用传到列表 l 中,当后
续操作修改 a[‘num’]的值的时候,l 中的值也会跟着改变,相当于浅拷贝。
以上是关于考虑以下 Python 代码,如果运行结束,命令行中的运行结果是什么?的主要内容,如果未能解决你的问题,请参考以下文章
python程序idle能运行无错误,但是命令行窗口一闪而过