ホームページ  >  記事  >  バックエンド開発  >  Pythonスコープの使用例分析を詳しく解説

Pythonスコープの使用例分析を詳しく解説

高洛峰
高洛峰オリジナル
2017-03-07 15:53:581196ブラウズ

この記事では、例を示して Python スコープの使用法を分析します。参考のために皆さんと共有してください。詳細は次のとおりです:

すべてのプログラミング言語には変数スコープの概念があり、Python も例外ではありません。以下は Python スコープのコードのデモです:

def scope_test():
  def do_local():
    spam = "local spam"
  def do_nonlocal():
    nonlocal spam
    spam = "nonlocal spam"
  def do_global():
    global spam
    spam = "global spam"
  spam = "test spam"
  do_local()
  print("After local assignment:", spam)
  do_nonlocal()
  print("After nonlocal assignment:", spam)
  do_global()
  print("After global assignment:", spam)
scope_test()
print("In global scope:", spam)

。プログラムの出力 結果:

After local assignment: test spam
After nonlocal assignment: nonlocal spam
After global assignment: nonlocal spam
In global scope: global spam

注: ローカル代入ステートメントは、scope_test のスパム バインディングを変更できません。非ローカル代入ステートメントは、scope_test のスパム バインディングを変更し、グローバル代入ステートメントは、モジュール レベルからスパム バインディングを変更します。

その中で、nonlocal は Python 3 の新しいキーワードです。

また、スパムがグローバル代入ステートメントの前に事前バインドされていないこともわかります。

概要:

プログラム内でグローバル変数にアクセスする状況に遭遇し、グローバル変数の値を変更したい場合は、以下を使用できます: global キーワード、この変数を関数内のグローバル変数として宣言します

nonlocal キーワードが関数で使用されています。または、他のスコープで外部 (非グローバル) 変数を使用します。

グローバル キーワードは理解しやすく、他の言語にも一般に同じことが当てはまります。別の非ローカルな例を次に示します:

def make_counter():
  count = 0
  def counter():
    nonlocal count
    count += 1
    return count
  return counter
def make_counter_test():
 mc = make_counter()
 print(mc())
 print(mc())
 print(mc())

実行結果:

1
2
3

Python スコープの使用例分析に関する詳細な記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。