【发布时间】:2020-10-10 16:49:01
【问题描述】:
我发现了一个关于内部变量的奇怪代码,我不明白它的行为:
artist = "ABBA"
def printer(artist):
global internal_var
internal_var= "Queen"
print(artist,"is an artist")
internal_var = "U2" # I added this line
printer(artist)
printer(internal_var) # I thought this would be "U2" ...
print(internal_var) # I added this line; I thought this would be "U2" ...
输出是:
ABBA is an artist
Queen is an artist
Queen
我完全糊涂了。
首先,为什么这不会导致冲突?
其次,为什么internal_var不被覆盖?
三、如何覆盖internal_var?
我认为它在一定程度上是有用的,但它会产生更多的错误。
请告诉我这个问题是否重复。
(我找不到任何类似的问题。)
提前谢谢你。
【问题讨论】:
-
我建议你把你的代码python tutor 看一步一步会发生什么。
-
为什么您认为将
"Queen"分配给internal_var不会将"Queen"分配给internal_var? -
声明一个全局变量使其成为非“内部”(“内部”可能是指“本地”)。
-
@Asocia 谢谢,非常有用。我用结果来继续这个讨论。
-
@MichaelButscher 你能详细说明一下吗? (顺便说一句,该网站将其介绍为
"internal variable"。)
标签: python variables conflict overwrite