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()