私の数学のクラスでは、Python でプログラムを書くように言われました。パートの 1 つで、シリーズの収束をテストしたいと思います。プログラムを作成しているときに、Python がグローバル変数を処理する方法について根本的に誤解していることに気付きました。このコードを取ります:
def main():
global n
n = 1
def check():
a = 10
if n > a: print(n)
else: n += 1
check()
main()
このコードは、n
まだ定義されていないため失敗します。ただし、check()
関数内で n を定義することはできません。これは、反復ごとに n を 1 にリセットするだけだからです。この問題の回避策はありますか?
コメントですでに述べたようにn
、ネストされた function 内にあるため、まだグローバル スコープにはありませんcheck
。あなたは追加する必要がありますglobal n
へのcheck
グローバルアクセスするには、の範囲n
ネストされた関数から値を:
def main():
global n
n = 1
def check():
global n
a = 10
if n > a: print(n)
else: n += 1
check()
main()
@PedrovonHertwigはまた、あなたが必要としない指摘global n
にmain
(使用したい場合は、これを無視し、自分の現在のコンテキストでケースであるn
トップレベルの範囲内のどこか)と、そのn
中に完全に罰金滞在しているmain
のローカルスコープ。次に、global
キーワードをcheck
to に置き換えて、ローカル スコープでもグローバル スコープでもなく、 のスコープにあるnonlocal n
を使用するように Python に指示するn
ことができmain
ます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加