2

rateグローバル変数として初期化しました:

import os, sys
rate=30

def foo():
    print('#########rate:', rate)
    if False:
        rate=int(sys.argv[2])


foo()

しかし、スクリプトを実行すると、次のエラーが発生します。

Traceback (most recent call last):
  Line 10, in <module>
    foo()
  Line 5, in foo
    print('#########rate:', rate)
UnboundLocalError: local variable 'rate' referenced before assignment

ステートメントは実行されませんが、if False: rate=int(sys.argv[2])何らかの影響があるようですが、これを説明するpythonルールはありますか?

4

1 に答える 1

3

rateグローバルとして宣言する必要があります。

import os, sys
rate=30

def foo():
    global rate # <----
    print('#########rate:', rate)
    if False:
        rate=int(sys.argv[2])


foo()

varaint への代入がある場合 (グローバル宣言なし)、ローカル変数として扱われます。

于 2013-09-01T14:21:53.990 に答える