Functionオブジェクト
関数名を挙げることができます。
def index(): print('from index') a = index #函数名赋值给a。 a() #执行a
関数名をパラメータとして渡すことができます
def foo(x, y, z): print(x, y) z() def bar(): print('from bar') foo(1, 2, bar) # bar = z, z()=bar(),打印:from bar
関数名は、戻り値として使用することができます
***パラメータ特別な要件が存在しない場合には、してはならない渡す括弧、その場で実行するブラケット。
def index(): #第一步:定义函数没有执行 print('from index') def func(a): #第二步:定义函数 return a #第五步:输出from index a = func(index) #第三步执行a,index = a a() #第四步执行a,相当于index().
関数名は、コンテナ型の要素として使用することができます
def func(): print('from func') #函数定义,没有执行 l1 = [1, 2, 3, func, func()] #func()直接执行,打印:from func f = l1[3] #func的出的时他的地址 print(f) 输出结果: from func <function func at 0x000001F8D7B63948>
ネストされた関数
ファンクションネストされた定義は:内部に関数を定義します
ネストされた関数呼び出し:関数内の関数を呼び出します
def func1(x,y): if x > y: return x else: return y print(func1(1,2)) def func2(x, y, z, a): result = func1(x, y) result = func1(result, z) result = func1(result, a) return result print(func2(1, 200000, 3, 1000))
名前空間
名前空間とは何ですか?
店舗名スペース
あなたは変数の値にアクセスしたい場合は、他のパーティなければならない最初の名前空間結合関係は、対応するメモリの名前とアドレスを取得します
名前空間カテゴリー:
1、ビルトイン名前空間:
名前のあなたの定義を完了するためのPythonの進歩は、組み込みの名前空間に存在しています
2、グローバルネームスペース
ファイルレベルの名前で保存されたグローバルネームスペースです
内部的に定義された名前のために実行した後、グローバルネームスペースに格納されている間場合
3、ローカル名前空間
すべての内部関数の名前は、ストレージの現在の関数で定義され、内蔵された名前空間されています
ライフサイクル:
1、内蔵の名前空間
Pythonインタプリタを有効にするために始めたとき、失敗への通訳の時間をシャットダウン
2、グローバルネームスペース
あなたは、現在のページのコード実行の終了が失敗した後、この電流PYファイルを有効にする起動すると、
3、ローカル名前空間
あなたは現在の関数の発効を呼び出すと、コードの最後の行の関数本体の端部は、名前空間の順序を見つけるために失敗した場合に実行されます。
順序を探します
名前空間の検索順序:
ローカル:ローカル>グローバル>内蔵
グローバル:グローバル>ビルトインビルトインエラー#上で見つけることができませんでした
内部関数はすでに死亡した定義フェーズで指定された名前を使用し、あなたの呼び出しサイト
x = 111 def func1(): #第一步 x = 222 def func2(): #第三步 x = 333 def func3(): #第五步 x = 444 def func4(): #第七步 x = 555 #第八步 print(x) print('from func4') func4() #第八步 func3() #第六步 func2() #第四步 func1() #第二步
x = 111 #是全局变量 def index(): def wrapper(): print(x) return wrapper #wrapper函数是在局部名称空间, # return结束函数就没有内容了 index() f = index() f()
スコープ
分類の範囲:
1、グローバルスコープ
グローバルは、グローバルスコープに存在する名前を呼び出すことができます
内蔵の名前空間+グローバルネームスペース
2、ローカルスコープ
ローカルストレージはローカルスコープの名前で呼び出すことができます
ローカル名前空間
グローバル:グローバル変数宣言
非ローカル:ローカル名前空間宣言ローカル変数、ローカルの上位機能で変更変数
唯一の変数型の値は、ローカル外部変数で変更することができます
golbal 全局变量使用 x = 1 def index(): global x #声明全局变量,使x = 2与x = 1在同一个级别, #1先赋值给x,2又赋值给x。 x = 2 index() 局部变量的修改无法影响上层,上上层 def index(): x = 1 def index2(): # nonlocal x x = 2 index2() print(x)