|
本帖最后由 whydo1 于 2016-9-25 21:30 编辑
python的变量和其它语言的变量略有不同.
每次赋值的时候实际上都会创建"新"的变量.
比如 a=3, 是这样一个过程: 先在内存中找到一个空间放入3这个数,然后把a指向这个内存地址.
如果接下来执行a=4,就会在内存中再找到一个新的空间放入4这个数,然后把a重新指向这个新的内存地址
你可以想象变量名是一个标签,而内存地址是一个个的空的或是非空的箱子,给变量赋值的过程,实际上是把变量名标签粘贴到新的箱子上的过程.
所以上面第一个程序中你传递了变量的地址,然后对地址中的值进行修改,结果是正确的.
第二个程序中,你传递了变量的地址,然后你重新建立了一个新的变量,这个新变量的地址和原来的地址是不同的,实际上是建立了一个局部变量.
如果确实要实现第二个程序的功能,可以使用全局变量.
- global lst2
- def f2():
- global lst2
- lst2=[4,5,6]
- f2()
- print('全局列表:', lst2)
复制代码
|
|