第5.4節Python関数における変数と役割ドメイン
1642 ワード
一、関数の変数使用規則関数の実行時に使用されるグローバル空間は呼び出し元のグローバル空間であり、パラメータおよび関数が使用するローカル変数は関数単独のローカル名前空間に格納される. 関数のパラメータが関数で値を変更した場合、呼び出し元自体のデータには影響しませんが、パラメータが可変タイプのコンテナであり、関数でコンテナ内の要素を変更した場合、この変更は呼び出し元のデータに影響します. 関数の変数は、ローカル変数(ローカル名前空間の変数)を使用するか、グローバル変数(グローバル名前空間の変数)を使用することができます.関数は、検索変数の読み取り専用を実行するときに、ローカル変数で検索し、見つからない場合はグローバル変数で検索します.したがって、ローカル変数とグローバル変数に同じ名前の変数がある場合、関数はローカル変数を使用し、ローカル変数に対応する変数がない場合にのみグローバル変数を使用します.一般的に、関数はローカル変数のみを操作し、グローバル変数を操作せず、特殊な場合にのみグローバル変数にアクセスします. 関数の内部で変数に値を割り当て、x=x+1などの値を指定した場合、Pythonがグローバル変数または非ローカル変数であることを明確に伝えない限り、変数のデフォルトはローカル変数です.関数に使用する変数がローカル変数として定義されていない場合、グローバル変数または非ローカル変数の宣言は行われません.Pythonは、関数に対応する変数の定義や付与がないと判断し、エラーを報告します.
二、関数の中でグローバル変数に値を与える方法
1、globalを使用して変数をグローバル変数として宣言するには、使用前に構文を使用します.
Globalグローバル変数名
次に、ローカル変数を使用するように、この変数を使用します.
2、グローバル空間に対するディクショナリキー-値アクセス方式グローバル変数を直接操作し、使用前にglobals()関数でグローバル名前空間を取得し、ディクショナリのキー-値方式でアクセスする.例:
3、グローバル変数をリストのようなコンテナに保存し、そのコンテナをパラメータとして関数に渡し、関数でコンテナの要素に直接値を割り当てます.
三、nonlocal変数
関数の変数には、ローカル変数とグローバル変数のほかに、nonlocalを使用して宣言される非ローカル変数がありますが、nonlocalキーワードはネスト関数にのみ使用され、外層関数に対応するローカル変数が定義されているため、エラーが発生します.ここでは単純に引き出すだけで、使用も比較的簡単で、詳しくは紹介しません.
老猿Python(https://blog.csdn.net/LaoYuanPython)シリーズ記事では,老猿がPythonを学んだ後にまとめた学習経験を徐々に紹介するために用いられ,これらの経験はPythonに触れたことのないプログラマーがPythonの世界に簡単に入るのに役立つ.
二、関数の中でグローバル変数に値を与える方法
1、globalを使用して変数をグローバル変数として宣言するには、使用前に構文を使用します.
Globalグローバル変数名
次に、ローカル変数を使用するように、この変数を使用します.
2、グローバル空間に対するディクショナリキー-値アクセス方式グローバル変数を直接操作し、使用前にglobals()関数でグローバル名前空間を取得し、ディクショナリのキー-値方式でアクセスする.例:
#
def f(x):
g,l=globals(),locals() #
g['x']=x*100 # x x *100
return g,l
#
x=1 # x
g1,l1=f(x) # g1 l1, x 100
g,l=globals(),locals() # g l
g、g1、l , is True, l1 。
3、グローバル変数をリストのようなコンテナに保存し、そのコンテナをパラメータとして関数に渡し、関数でコンテナの要素に直接値を割り当てます.
三、nonlocal変数
関数の変数には、ローカル変数とグローバル変数のほかに、nonlocalを使用して宣言される非ローカル変数がありますが、nonlocalキーワードはネスト関数にのみ使用され、外層関数に対応するローカル変数が定義されているため、エラーが発生します.ここでは単純に引き出すだけで、使用も比較的簡単で、詳しくは紹介しません.
老猿Python(https://blog.csdn.net/LaoYuanPython)シリーズ記事では,老猿がPythonを学んだ後にまとめた学習経験を徐々に紹介するために用いられ,これらの経験はPythonに触れたことのないプログラマーがPythonの世界に簡単に入るのに役立つ.