Python两处容易理解错误的设计

函数内部修改 可变类型 的变量时不会视作局部变量(除非函数内有该变量的赋值运算符),因为如果做局部变量处理则修改语句势必报错,此处的理解不会有歧义:
s = 'test'
d = {True:1,2:'Second'}

def f():
d['name']='China'
print(d,'/n')
s = 1
print('函数f()内的局部变量:/n/t/ts={0}/tid={1}/n'.format(s,id(s)))

f()
print('全局变量:/n/t/ts={0}/tid={1}'.format(s,id(s)))

a+=x跟a=a+x执行后的结果看似相等,但实际结果是否同一个存储对象,取决于a是可变类型 or 不可变类型a=a+x的本质 :python会直接去调用内置的__add__a+=x的本质 : python会 优先调用 内置的 __iadd__ ,若a的类型无该方法定义则 自动退化 为调用__add__。并且,目前只有可变类型 list 才内置有__iadd__,其余的可变

Python两处容易理解错误的设计最先出现在Python成神之路

版权声明:
作者:dingding
链接:https://www.techfm.club/p/14856.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>