当局部变量行为#out时,NumberOfSymbols在For Loop范围内被识别.为什么它是一个全球性的组织


def OutputSymbols():
Symbol = '*'
for i in range(0,NumberOfSymbols):
print(Symbol,end='')    
print()
#NumberOfSymbols = NumberOfSymbols +1
NumberOfSymbols = 5  
OutputSymbols()

当局部变量行为#out时,NumberOfSymbols在For Loop范围内被识别。为什么它是一个全球性的组织?去掉#使其充当局部变量。为什么?这是当换行符NumberOfSymbols=NumberOfsymbol+1为#out时出现的错误消息。

for i in range(0,NumberOfSymbols):
UnboundLocalError: local variable 'NumberOfSymbols' referenced before assignment

你能纠正这一点并解释为什么这不起作用吗?感谢

函数中任何位置的NumberOfSymbols赋值都会使其成为整个范围内的局部变量,甚至看起来像是"追溯"到前一行。如果没有这样的赋值,它就不是一个局部变量,而是一个可以在任何封闭的非局部作用域(包括全局作用域(中解析的自由变量。

如果要分配给全局变量,则需要使用global语句。

def OutputSymbols():
global NumberOfSymbols
Symbol = '*'
for i in range(0,NumberOfSymbols):
print(Symbol,end='')    
print()
NumberOfSymbols = NumberOfSymbols +1
NumberOfSymbols = 5  
OutputSymbols()

最新更新