Python 当局部变量行为#out时,可在For循环范围内识别NumberOfSymbols。为什么它要扮演一个全球性的角色?

Python 当局部变量行为#out时,可在For循环范围内识别NumberOfSymbols。为什么它要扮演一个全球性的角色?,python,Python,当局部变量行为#out时,可在For循环范围内识别NumberOfSymbols。为什么它要扮演一个全球性的角色?去掉#使其充当局部变量。为什么?这是当line NumberOfSymbols=NumberOfSymbols+1为#out时出现的错误消息 请您纠正这一点,并解释为什么这不起作用?感谢对函数中任意位置的NumberOfSymbols赋值,使其成为一个局部变量,而不考虑范围,甚至在前一行看起来是“追溯”的。如果没有这样的赋值,它就不是局部变量,而是可以在任何封闭的非局部范围(包括全局

当局部变量行为#out时,可在For循环范围内识别NumberOfSymbols。为什么它要扮演一个全球性的角色?去掉#使其充当局部变量。为什么?这是当line NumberOfSymbols=NumberOfSymbols+1为#out时出现的错误消息


请您纠正这一点,并解释为什么这不起作用?感谢

对函数中任意位置的
NumberOfSymbols
赋值,使其成为一个局部变量,而不考虑范围,甚至在前一行看起来是“追溯”的。如果没有这样的赋值,它就不是局部变量,而是可以在任何封闭的非局部范围(包括全局范围)中解析的自由变量

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

for i in range(0,NumberOfSymbols):
UnboundLocalError: local variable 'NumberOfSymbols' referenced before assignment
def OutputSymbols():
全局数符号
符号='*'
对于范围内的i(0,NumberOfSymbols):
打印(符号,结束=“”)
打印()
NumberOfSymbols=NumberOfSymbols+1
NumberOfSymbols=5

OutputSymbols()
顺便说一句,您可能想阅读。我希望您继续编辑这个问题,并解释为什么在99.9%以上的情况下使用
global
是一个坏主意。现在还不完全清楚,即使OP也希望使用全局变量,因为代码中的任何其他内容似乎都不能保证增加该值。
for i in range(0,NumberOfSymbols):
UnboundLocalError: local variable 'NumberOfSymbols' referenced before assignment
def OutputSymbols():
    global NumberOfSymbols
    Symbol = '*'

    for i in range(0,NumberOfSymbols):
        print(Symbol,end='')    
    print()
    NumberOfSymbols = NumberOfSymbols +1

NumberOfSymbols = 5  
OutputSymbols()