python中的变量引用小结

python的变量都可以看成是内存中某个对象的引用。(变量指向该内存地址存储的值)

1.python中的可更改对象和不可更改对象

python中的对象可以分为可更改(mutable)对象与不可更改(immutable)对象

  • strings, tuples, 和numbers是不可更改的对象
  • list,dict等则是可以修改的对象。
    如果某个变量指向不可更改的对象,则重新赋值时。原对象被抛弃,变量会指向一个新对象。
    若指向的是可更改的对象,则重新赋值时,会也会重新赋值内存中对象的值。

如图:nfoo是numbers为不可更改对象,lstFoo是list为可更改对象

注意若lstFoo整个list变量重新赋值,则还是新开辟一个内存对象,lstFoo再指向新的内存对象

当重新赋值时,发生的改变如下图

2.python的函数是引用调用,还是传值调用?

在函数参数传值时,变量也是内存对象的引用。 当对象为可更改对象时,是引用调用,函数内参数的改变会影响到原始对象。 当对象为不可更改对象时,就只是相当于传值调用。

猜你喜欢

转载自www.cnblogs.com/laiyaling/p/11784474.html