国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
導入
概要
目次
Pythonの変數は何ですか?
グローバル変數
ローカル変數
名前空間は何ですか?
Pythonの可変スコープは何ですか?
legbルールとは何ですか?
Python変數スコープワークはどのようになりますか?
1.ローカル範囲でグローバル変數を使用します
出力
2.ローカル範囲でローカル変數を使用します
3.ローカルスコープ內のグローバル変數の変更
4.宣言を使用してローカルスコープ內でグローバル変數を変更します
5。関數を使用して、グローバル可変インシンサイドローカルスコープを変更します
ネストされた機能は何ですか?
変數の包囲範囲は何ですか?
7.宣言なしで範囲內の封筒內のグローバル変數を修正します
8。宣言を使用してローカルスコープ內でネストされた変數を変更します
結論
よくある質問
ホームページ テクノロジー周辺機器 AI Pythonネームスペースと可変スコープに関する包括的なガイド

Pythonネームスペースと可変スコープに関する包括的なガイド

Apr 12, 2025 pm 12:00 PM

導入

Python関數における変數の名前空間、スコープ、および動作を理解することは、効率的に記述し、ランタイムエラーや例外を回避するために重要です。この記事では、名前空間やPython変數スコープのさまざまな側面を掘り下げ、Pythonがローカル、グローバル、および囲みの変數を詳細に管理する方法を學びます。

Python関數について詳細に説明しましたが、これは先にあります。 Pythonは抽象化の原則を使用して複雑なロジックを非表示にし、必要な出力のみを公開しますが、分解はモジュラー、読み取り可能、および再利用可能な機能を作成します。

これらの原則は、Pythonが関數定義とネストされた関數の変數スコープをどのように処理するかを理解するのに十分なほど明白であり、詳細な例を介して探求します。この記事の終わりまでに、これらの概念とプログラムに効果的に適用する方法を明確に理解する必要があります。

Pythonネームスペースと可変スコープに関する包括的なガイド

概要

  • Pythonの名前空間と可変スコープは、効率的なコーディングとエラー防止に不可欠です。
  • この記事では、Pythonでのローカル、グローバル、および囲まれた変數の動作を調査します。
  • LEGBルールは、異なるスコープにわたるPythonの変數名検索について説明します。
  • 実用的な例は、グローバルおよびローカルの可変の使用と変更を示しています。
  • ネストされた関數と囲まれたスコープがカバーされており、非ローカルキーワードを強調します。

目次

  • Pythonの変數は何ですか?
    • グローバル変數
    • ローカル変數
  • 名前空間は何ですか?
  • Pythonの可変スコープは何ですか?
  • legbルールとは何ですか?
  • Python変數スコープワークはどのようになりますか?
    • 1.ローカル範囲でグローバル変數を使用します
    • 2.ローカル範囲でローカル変數を使用します
    • 3.ローカルスコープ內のグローバル変數の変更
    • 4.宣言を使用してローカルスコープ內でグローバル変數を修正します
    • 5。関數を使用して、グローバル可変インシンサイドローカルスコープを変更します
  • ネストされた機能は何ですか?
  • 変數の包囲範囲は何ですか?
    • 7.宣言なしで範囲內の封筒內のグローバル変數を修正します
    • 8。宣言を使用してローカルスコープ內でネストされた変數を変更します
  • よくある質問

Pythonの変數は何ですか?

Pythonの変數は、データまたは値(int、float、str、boolなどなど)を保存するコンテナです。変數が保存され、將來の使用のためにアクセス可能なメモリ位置は、変數のthescopeと呼ばれます。

Pythonには2種類の変數があります。

グローバル変數

  • これらの変數は、メインプログラムの範囲の下にあります。
  • メインプログラムは、関數でのみ利用可能であるため、ローカル変數を使用できません。

ローカル変數

  • これらの変數は、関數の範囲の下にあります。
  • また、ローカル変數は、ローカル変數がローカルスコープ內で定義されていない場合、関數內のグローバル変數を使用できます。

また、Pythonの可変性と不変のオブジェクトも読みます

名前空間は何ですか?

Python Namepaceは、識別子(一般に変數名と呼ばれる)をキーとして、およびそれぞれのオブジェクトをメモリ空間內の値として保持するAspaceまたは辭書です。 Pythonプログラミング言語には、4種類の名前空間があります。

  • 組み込みの名前空間
  • グローバルネームスペース
  • 名前空間を囲む
  • ローカルネームスペース

この概念をよりよく理解するために、すぐにさまざまな例を見てみましょう。しかし、その前に、上記の可変スコープを理解することが本當に重要です。

Pythonの可変スコープは何ですか?

Pythonでは、スコープとは、変數が直接アクセス可能なプログラムの領域またはテキスト領域を指します。実行中はいつでも、次のものがあります。

  • ローカルスコープ:これは、関數內で定義される最も內側の範囲です。この範囲では、Pythonはローカル変數を探します。
  • 囲まれた範囲:これらは、ネストされた関數のスコープです。これらには、ローカルでもグローバルでもない非ローカル変數が含まれています。
  • グローバルスコープ:このスコープには、モジュールレベルで定義された変數が含まれており、モジュール全體でアクセスできます。

注:プログラムでこれらのユーザー定義のスコープを作成して、効率的に実行します。ただし、Pythonの組み込み変數には、組み込みスコープと呼ばれるスコープもあります。

  • 組み込み範囲:これは、より良いコードを作成するためにPythonが提供するすべての事前定義されたキーワードまたはメソッドの範囲です。したがって、これらはPythonインタープリターが起動するとすぐに利用できます。また、これらのスコープは削除されることはなく、モジュール全體でアクセス可能であることに注意してください。

legbルールとは何ですか?

これで、名前空間と可変範囲についての基本的な理解ができます。 ScopingルールがPythonプログラミング言語でどのように適用されるかを理解するために、より深く潛りましょう。一般的な略語、legbルールがあります。これは、ローカル、囲み、グローバル、およびビルトインを導入します。

LEGBルールは、インタープリターが內側から識別子を検索できることを示しています。つまり、最初にローカルスコープで変數名または名前空間を探すことから始まります。名前空間が存在しない場合、プログラムの囲い範囲に向かって移動します。 ext、グローバルスコープをチェックして名前空間を見つけます。最後に、識別子がまだ見つからない場合、通訳者はPythonが提供する內蔵スコープを調べます。

Pythonネームスペースと可変スコープに関する包括的なガイド

さらに、インタープリターがこれらの場所のいずれにも名前を見つけられない場合、Pythonはa ` nameerror`例外を提起します。つまり、変數はプログラムで定義されていません。

また、現在の範囲からlegbルールの階層を上に移動する必要があることを覚えておくことは本當に重要です。

また読む:Advanced Pythonプログラミングの包括的なガイド

Python変數スコープワークはどのようになりますか?

それでは、これらすべての例を1つずつ進めて、これらすべての概念を深く理解しましょう。

1.ローカル範囲でグローバル変數を使用します

これを理解するために、例を挙げてみましょう。ここでは、関數 ` g(y) `がグローバル変數 ` x`を印刷するだけでなく、 ` x 1`として変更します。

次に、 `x`が ` g(y)`內で定義されていないため、pythonはグローバル変數 ` x`の値を取得します。

 def g(y):
  印刷(x)
  印刷(x 1)

#xはローカルスコープにないため、グローバル変數からxの値を取得します
x = 1
g(x)#ローカル変數內のグローバル
print(x)#グローバル変數

出力

1<br><br> 2<br><br> 1

出力は、グローバル変數「 x 」が変化しないことを確認する`x`と ` x 1`の値を示していますが、結果を適切に出力するためにローカル範囲で使用されています。

2.ローカル範囲でローカル変數を使用します

次に、この例を見てください。ここでは、関數定義 ` g(y) `と內部に與えられた関數 ` g`の下にあります。名前 ` x`はローカル変數として定義され、変更されます。

 def g(y):
  x = 10#ローカル変數
  x = 1
  印刷(x)


x = 1#グローバル変數
g(x)
印刷(x)

出力

11<br><br> 1

証拠として、グローバル「 x 」は変更されておらず、ローカル変數はローカルスコープ変數を使用して、予想どおり、関數を介した出力として11を表示し、1出力をグローバルスコープで表示するステートメントを印刷しました。

また、読む:Pythonビルトインデータ構造の包括的なガイド

3.ローカルスコープ內のグローバル変數の変更

しかし、グローバル変數を「グローバル」と宣言することなく変更することは可能ですか?

答えはノーです!ローカルスコープからグローバル変數値を変更することはできません。これにより、エラーが発生するためです。

 def h(y):

  #関數は、グローバル変數を使用できます。
  x = 10#ただし、ローカル変數內のグローバル値を変更することはできません

x = 1
h(x)
印刷(x)

出力

UnboundLocalerror Traceback(最新のコールLast)<br><br> <ipython-input-3-130c677cc9ab> in <cell line>()<br><br> 3<br><br> 4 x = 1<br><br> ----> 5 h(x)<br><br> 6プリント(x)<br><br> <ipython-input-3-130c677cc9ab> in h(y)<br><br> 1DEF H(Y):<br><br> ----> 2 x = 10<br><br> 3<br><br> 4 x = 1<br><br> 5時間(x)</ipython-input-3-130c677cc9ab></cell></ipython-input-3-130c677cc9ab>

unboundlocalerror:割り當ての前に參照されているローカル変數`x '

これにより、Pythonは割り當て操作のためにローカル変數として扱いますが、ローカルで初期化されていないため、「 boundlocalerror 」になります。また、ローカル変數はグローバル変數にアクセスできますが、グローバル変數に変更を加えることはできません(読み取りでしか読めません)。

また、初心者向けのPythonプログラミングの基礎

4.宣言を使用してローカルスコープ內でグローバル変數を変更します

しかし、Pythonは実際には甘い言語であり、グローバル変數で変更や変更を行うことをお勧めしないにもかかわらず、私はいつもあなたに言ってきたので。それは、「x」を同じキーワードを使用して「x」を「グローバル」と宣言することで、この機能がグローバル変數 `x`を変更できるため、Pythonがこの機能を提供しないという意味ではありません。

 def h(y):
  グローバルX#これでローカル変數內のグローバル値を変更できます
  #しかし、それはコーディングの良い方法ではありません。このグローバルなキーワードの使用を減らすことに集中する必要があります
  x = 10

x = 1
h(x)
印刷(x)

出力

11

出力は、 「x 」がグローバルに更新されていることを確認しています。ただし、メイン関數を変更すると他の機能にも影響するため、変更はプログラム全體に影響を與えるため、変更はプログラム全體に影響を與えることを忘れないでください。

5。関數を使用して、グローバル可変インシンサイドローカルスコープを変更します

また、関數內のグローバル変數を10 x x ` x`をインクリメントすることで変更することもできます。新しい値を印刷して返すことができます。

:これは、「グローバル」キーワードなしでは不可能であるため、グローバル変數自體を変更しているという意味ではありません。

 def g(x):
  x = 10
  print( "in f(x):x ="、x)
  x#returningf(x)を返す

x = 2
z = g(x)
print( "メインプログラムスコープ:z ="、z)
print( "メインプログラムスコープ:x ="、x)

出力

f(x):x = 12<br><br>メインプログラムの範囲:z = 12<br><br>メインプログラムの範囲:x = 2

ここでは、グローバル`x`は変わらず、返された値「 z 」は新しい更新値です。

ネストされた機能は何ですか?

別の「 def 」関數內で定義される関數は、ネストされた関數または內部関數と呼ばれます。

以下は、より良い理解を得るためのネストされた機能の例です。

 def f():
  def g():
    print( "內部関數G")
  g()
  print( "內部関數f")

f()

出力

內部関數g<br><br>內部関數f

:ネストされた関數 ` g`は、両方の関數からメッセージを印刷する関數內で呼ばれます。 「 g 」はグローバル範囲で定義されていないため、 ` f` f` willsults on erserの外側の呼び出し` g `を呼び出します。

 g()#この関數は関數fの外側に定義されていません

出力

TypeError Traceback(最新のコールLast)<br><br> <ipython-input-8-5fd69ddb5074> in <cell line>()<br><br> ----> 1 g()<br><br> typeRror:g()欠落1必要な位置引數: 'x'</cell></ipython-input-8-5fd69ddb5074>

変數の包囲範囲は何ですか?

Pythonは、ネストされた関數內で定義されている名前のみが囲まれた範囲として知られている名前のみに、異なる特別な変數スコープを提供します。 「非ローカル」スコープとしても知られています。範囲を囲むことは、內側またはネストされた関數であるローカル関數がある場合、外部関數の範囲です。

 def f():
  x = 1
  def g():
    print( "內部関數G")
    印刷(x)
  g()
  print( "內部関數f")
  
f()

上記の例に示すように、この変數`x`は囲い範囲內に存在し、ローカルスコープでも使用できます。これが出力です:

出力

內部関數g<br><br> 1<br><br>內部関數f

さて、先に進み、この新しい範囲をよりよく理解しましょう。

7.宣言なしで範囲內の封筒內のグローバル変數を修正します

繰り返しますが、ネストされた関數內のグローバル変數 ` x`を変更することは不可能です。

 def g(x):
  def h():
    x = 1
    print( 'in h(x):x ='、x)
  x = x 1
  print( 'in g(x):x ='、x)
  h(x)
  xを返します

x = 3
z = g(x)
print( 'メインプログラムスコープ:x ='、x)
print( 'メインプログラムスコープ:z ='、z)

出力

g(x):x = 4<br><br> --------------------------------------------------------------------------------------------------------------------------------------------------------<br> TypeError Traceback(最新のコールLast)<br><br> <ipython-input> in <cell line>()<br><br> 9<br><br> 10 x = 3<br><br> ---> 11 z = g(x)<br><br> 12印刷( 'メインプログラムの範囲:x ='、x)<br><br> 13印刷( 'メインプログラムの範囲:z ='、z)<br><br> <ipython-input> in g(x)<br><br> 5 x = x 1<br><br> 6プリント( 'in g(x):x ='、x)<br><br> ----> 7時間(x)<br><br> 8戻るx<br><br> 9<br><br> typeRror:g。<locals> .h()は0の位置引數を取りますが、1が與えられました</locals></ipython-input></cell></ipython-input>

関數 ` h() `は、パラメーターなしで定義されますが、 `h(x)`は引數で呼び出されます。これにより、「typeReror」も得られます。エンコリング変數はグローバル変數にアクセスできますが、グローバル変數の変更を実行することはできません。

8。宣言を使用してローカルスコープ內でネストされた変數を変更します

同様に、「グローバル」キーワードと同様に、Pythonは開発者に「非ローカル」キーワードを提供します。これにより、ネストされた関數「 h 」は、囲み式関數で定義されている変數`x`を変更できます。

 def g(x):
  def h():
    非ローカルx#h()にg(x)からxを使用するようにtell
    x = 1
    print( 'in h(x):x ='、x)
  x = x 1
  print( 'in g(x):x ='、x)
  h()#引數なしでh()を呼び出します
  xを返します

x = 3
z = g(x)
print( 'メインプログラムスコープ:x ='、x)
print( 'メインプログラムスコープ:z ='、z)

出力

g(x):x = 4<br><br> h(x):x = 5<br><br>メインプログラムの範囲:x = 3<br><br>メインプログラムの範囲:z = 5

出力は、両方の関數內で行われた変更と、グローバル変數 ` x`が変更されていないことを示しています。

最後に、スコープが定義されている場所に応じて、各スコープはプログラム全體で異なるレベルのアクセスに対応し、コード內の名前空間の壽命が異なることに注意してください。

また読む:データサイエンスをゼロから學ぶための完全なPythonチュートリアル

結論

この記事では、Pythonがローカルおよびグローバル変數とネストされた機能をどのように処理するかを検討しました。名前空間は、Pythonが開発者に提供する辭書であり、そこからPythonメモリの範囲に変數名とその値を見つけることができることを學びました。さらに、スコープは、ローカル、囲み、グローバル、および組み込みの4つのタイプです。

これらは、競合の命名を回避し、どの名前/識別子がプログラムのさまざまな部分全體のオブジェクトを參照するかを追跡するために非常に役立ちます。

また、ローカルスコープからグローバルスコープの変數を変更する場合は、「グローバル」キーワードを使用できます。同様に、「非ローカル」キーワードを使用してスコープを閉じることができます。

  1. ローカルスコープ:関數內で作成された変數は、その関數內でのみアクセス可能で、関數が返されるときに削除されます。
  2. 囲まれた範囲または非局所範囲:內部関數にアクセス可能なネストされた関數の外側関數で作成された変數。
  3. グローバル範囲:「 __main__ 」プログラムで作成された変數は、プログラム全體でアクセス可能で、通訳が終了するまで続きます。

これにより、業(yè)界関連のベストプラクティスをフォローし、開発者定義の例外を減らしながら、優(yōu)れた生産レベルのコードを書くことに関する洞察を得るのに役立つことを願っています。ただし、これはプログラムをより堅牢にするための最初のステップであり、カバーすることにより多くのことがあります。

したがって、次の記事にご期待ください。Pythonプログラミング言語でのファイルのシリアル化と降下について説明します!

よくある質問

Q1。 Pythonの名前空間は何ですか?

Ans。 Pythonの名前空間は、プログラム內の名前または識別子を整理および管理します?;镜膜恕ⅳ饯欷椁?、変數や関數など、オブジェクトにマッピングされた名前を保存するコンテナまたは辭書のように機能します。

Q2。 PythonのLEGBルールは何ですか?

Ans。 PythonのLEGBルールは、Pythonインタープリターが名前または一般的に識別子として知られている際に見上げる順序です。ローカル、囲い、グローバル、および組み込みの略です。
1。ローカル:関數內で定義された名前。
2。囲まれている:囲まれた関數(ネストされた関數)のローカル範囲の名前。
3。グローバル:スクリプトまたはモジュールの上位レベルで定義された名前。
組み込み:「印刷」または ` len`など、Pythonで事前に定義されている名前。

Q3。 Pythonでの「グローバル」キーワードの使用は何ですか?

Ans。グローバルキーワードを使用すると、関數がグローバルスコープで定義された変數を変更し、変數が操作の外に存在することを可能にします。注:それができるからといって、これを使用する必要があるという意味ではありません。

Q4。グローバル変數の使用を最小限に抑えることをお勧めするのはなぜですか?

Ans。グローバル変數の過剰使用は、理解して維持するのが難しいプログラムにつながる可能性があります。また、意図しない変更を引き起こし、デバッグをより困難にする可能性があります。一般に、ローカル変數を使用して、必要に応じてそれらを渡すことをお勧めします。

Q5。ネストされた関數での「非ローカル」キーワードの使用は何ですか?

Ans。グローバルキーワードと同様に、Pythonは「非ローカル」キーワードを提供して、囲みの変數を変更します。非ローカルキーワードは、ネストされた関數の囲み込まれた関數で定義された変數を変更し、ネストされた関數の変數スコープを制御する方法を提供します。

以上がPythonネームスペースと可変スコープに関する包括的なガイドの詳細內容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Kimi K2:最も強力なオープンソースエージェントモデル Kimi K2:最も強力なオープンソースエージェントモデル Jul 12, 2025 am 09:16 AM

今年初めにゲナイ産業(yè)を混亂させたオープンソースの中國モデルの洪水を覚えていますか? Deepseekはほとんどの見出しを取りましたが、Kimi K1.5はリストの著名な名前の1つでした。そして、モデルはとてもクールでした。

Grok 4 vs Claude 4:どちらが良いですか? Grok 4 vs Claude 4:どちらが良いですか? Jul 12, 2025 am 09:37 AM

2025年半ばまでに、AIの「武器競爭」は熱くなり、Xaiと人類は両方ともフラッグシップモデルであるGrok 4とClaude 4をリリースしました。これら2つのモデルは、設計哲學と展開プラットフォームの反対側にありますが、

今日、今日私たちの間を歩いている10の驚くべきヒューマノイドロボット 今日、今日私たちの間を歩いている10の驚くべきヒューマノイドロボット Jul 16, 2025 am 11:12 AM

しかし、おそらく1つを見るのに10年も待つ必要はありません。実際、本當に有用で人間のような機械の最初の波と考えられるものは、すでにここにあります。 近年、多くのプロトタイプと生産モデルがTから抜け出しています

コンテキストエンジニアリングは&#039; new&#039;迅速なエンジニアリング コンテキストエンジニアリングは&#039; new&#039;迅速なエンジニアリング Jul 12, 2025 am 09:33 AM

前年まで、迅速なエンジニアリングは、大規(guī)模な言語モデル(LLMS)と対話するための重要なスキルと見なされていました。しかし、最近、LLMは推論と理解能力を大幅に進めています。當然、私たちの期待

6タスクManus AIは數分で行うことができます 6タスクManus AIは數分で行うことができます Jul 06, 2025 am 09:29 AM

一般的なAIエージェントであるManusについて知っている必要があると確信しています。數ヶ月前に発売され、數か月にわたって、彼らはシステムにいくつかの新機能を追加しました。これで、ビデオを生成したり、Webサイトを作成したり、MOを行うことができます

LeiaのImmersityモバイルアプリは、毎日の寫真に3D深さをもたらします LeiaのImmersityモバイルアプリは、毎日の寫真に3D深さをもたらします Jul 09, 2025 am 11:17 AM

レイア獨自のニューラル深度エンジンの上に構築されたアプリは、靜止畫像を処理し、シミュレートされた動き(パン、ズーム、視差効果など)とともに自然な深さを追加し、SCEに踏み込む印象を與える短いビデオリールを作成します。

7種類のAIエージェントは何ですか? 7種類のAIエージェントは何ですか? Jul 11, 2025 am 11:08 AM

AIエンジンなど、ミラノからの新しい衣料品コレクションに関する詳細なフィードバックや、世界中で事業(yè)を展開しているビジネスの自動市場分析、または大規(guī)模な車両艦隊を管理するインテリジェントシステムなど、洗練されたものを想像してください。

これらのAIモデルは言語を學ぶことができず、戦略を學びました これらのAIモデルは言語を學ぶことができず、戦略を學びました Jul 09, 2025 am 11:16 AM

キングスカレッジロンドンとオックスフォード大學の研究者からの新しい研究は、Openai、Google、および人類が反復囚のジレンマに基づいた激しい鳴き聲競爭で一緒に投げ込まれたときに起こったことの結果を共有しています。これはノーでした

See all articles