#
网页链接 var1 = 1 def changeVar1(): global var1 var1 = 2 print(f'in a: var1 is {var1}')
问题的原因在这第2句话上,你这里的写法是一厢情愿的,你认为声明了一个全局var1,然后var1=2,但其实由于全局var1指向的是不可变数据结构,所以,var1=2这句话是另起了一个局部变量var1,所以,下面的这句,print(f’in a:var1 is {var1}’)这里面的var1是局部变量var1。并不是那个你一厢情愿认识的全局变量var1。
你可能要问为啥,简单说可以理解为就近选择吧,局部变量更近。
当全局变量指向的是不可变数据类型,你在函数内部声明global,并为其赋值时,必然是这个结果。
懂了吗,猪妹妹