ここではナッツをやっています。UnboundLocalError:代入前にローカル変数 'url_request'が参照されています
url_request = 0
def somefunction():
url_request+=1
if __name__ =='__main__':
somefunction()
私にUnboundLocalErrorを与えます。どんな重要なコンセプトが私はここで欠けている?
ここではナッツをやっています。UnboundLocalError:代入前にローカル変数 'url_request'が参照されています
url_request = 0
def somefunction():
url_request+=1
if __name__ =='__main__':
somefunction()
私にUnboundLocalErrorを与えます。どんな重要なコンセプトが私はここで欠けている?
あなたがグローバルとしてマークにそれを必要とする意味グローバル変数に代入されます:あなたはローカルスコープ内の変数に割り当てた場合、ローカルであると想定される
def somefunction():
global url_request
url_request+=1
あなたがglobal
ステートメントを使用してPythonに最初に指示しない限り、変数です。
Python 2.7の場合、グローバル、ローカルの変数が必要です。各関数は変数のローカルスコープを作成します。
をローカルの有効範囲から読み取ることができます。 グローバルオブジェクトメソッドを呼び出すこともできるので、変数をグローバルから変更することができます。しかし、値を再割り当てすることはできません。このコードでは
ルック:
requests = [1,2,3]
def modify():
requests.append(4)
def redeclare():
requests = [10,20,30]
modify()
print requests
# will give you [1,2,3,4]
redeclare()
print requests
# will give you [1,2,3,4]
何が起こっていますか? requests
変数をローカルスコープから再割り当てすることはできません。したがって、その他のredeclare
コールコンテキストの可変ローカルスコープが作成されます。
コードに関して...まず、グローバルスコープから変数を再割り当てしようとします。どうして? url_request
はint
、int
は不変なので、操作url_request+=1
はの変更の値ではなく、新しい値を変数名に再割り当てする必要があります。第2に、global
この変数の識別を指定しません。したがって、ローカル変数としてurl_request
と仮定するインタプリタのオプションは1つだけです。しかし...あなたはどこにでも値を宣言していませんでした....
UnboundLocalError
は、前に宣言することなく変数値を使って操作を実行しようとしています。 Python変数/名前/スコープの詳細を理解するのに役立ちます。
これは決して知らなかった。どうもありがとう。 – user1561108
'+ ='が代入をしているとは思えませんでした。 –