0

なぜこれが不可能なのですか?

CONSTANT = 1
def main():
    if False:
        CONSTANT = 0
    print(CONSTANT)
main()

エラー:

UnboundLocalError: local variable 'CONSTANT' referenced before assignment

明示的な代入は何も変更しません:

CONSTANT = 1
def main():
    CONSTANT = CONSTANT
    if False:
        CONSTANT = 0
    print(CONSTANT)
main()

名前を変更するだけで仕事ができます:

CONSTANT = 1
def main():
    constant = CONSTANT
    if False:
        constant = 0
    print(constant)
main()

それはちょっと面倒です、どうにかしてその行動を避けることはできますか?

4

1 に答える 1

2

グローバルとして定義CONSTANTします。

CONSTANT = 1
def main():
    global CONSTANT
    print(CONSTANT)
    CONSTANT = 0
    print(CONSTANT)
main()
于 2013-09-07T20:16:50.580 に答える