python数据结构-可变数据类型与不可变数据类型
可变数据类型:列表list和字典dict
不可变数据类型:整型int、浮点型float、字符串型string和元组tuple
python中的不可变数据类型,不允许变量的值发⽣变化,如果改变了变量的值,相当于是新建了⼀个对象,⽽对于相同的值的对象,在内存中则只有⼀个对象,内部会有⼀个引⽤计数来记录有多少个变量引⽤这个对象;可变数据类型,允许变量的值发⽣变化,即如果对变量进⾏append、+=等这种操作后,只是改变了变量的值,⽽不会新建⼀个对象,变量引⽤的对象的地址也不会变化。
函数默认参数要⽤元组⽽⾮列表
定义函数的默认参数的时候,形如 def foo(attrs=(1,2)): return 之类。这⾥设定容器类型的默认参数 attrs 使⽤了元组⽽不⽤列表的原因在于:列表作为⼀种可变类型⾮常的不靠谱。当脚本执⾏到函数定义之处的时候,解释器会对参数表达式做⼀次“预演算”,并把值保存到内存之中,之后每次调⽤这个函数的时候,都不会再重新运算其参数表达式,⽽是直接从“预演算”的结果处取值(引⽤)。所以如果你的默认参数写了⼀个列表进去,那么每次你调⽤这个函数时对这个列表所做的更改都会被保存下来。就像这样:
字符串截取不改变原字符串>>> def biggest(n, store=[0]):
store[0] = max(n, store[0])
return store[0]
>>> biggest(3)
3
>>> biggest(9)
9
>>> biggest(5)
9

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。