Python-関数オブジェクト、ネストされた関数、スコープと名前空間

オブジェクト関数

Pythonオブジェクト内のすべて

4つの関数の関数オブジェクト

引用文

def f1():
    print('from f1')

f1()  #调用函数
print(f1)
print('*'*50)
f = f1  # 将函数名f1赋值给f
f()  # f也可以调用函数
print(f)

from f1
<function f1 at 0x000001FB05534620>
**************************************************
from f1
<function f1 at 0x000001FB05534620>

変数名に対応する機能名の両方を受信する機能体によって返される値は、割り当てることができます。

関数の引数として

def f1():
    print('from f1')

def f2(a):
    return a
f3 =f2(f1)
f3()
print(f3)

from f1
<function f1 at 0x00000275FA914620>

これは、関数の戻り値として使用することができます

def f1():
    print('from f1')

def f2():
    return f1

f3 =f2()
f3()

print(f3)

from f1
<function f1 at 0x0000014931304620>

要素の種類は、コンテナとして使用することができます

def f1():
    print('from f1')

l = [1,2,3,f1]
l[3]()

from f1

ネストされた関数

ネストされた関数の定義

内部関数定義された関数は、外部関数で定義された関数内で使用することができません。

ネストされた関数の呼び出し

from math import pi
def circle(r,action):
    if action == 'p':
        def perimeter():
            return 2 * pi * r
        res = perimeter()
    elif action == 'a':

        def area():
            return pi * r**2
        res = area()
    else:
        return ' '
    return res
result = circle(2,'p')
print(result)

12.566370614359172

名前空間とスコープ

名前空間

変数名と変数の記憶メモリ(ストレージスペース変数名)との関係を結合スペースは、このスペースは、名前空間と呼ばれています。

ビルトイン名前空間

ビルトイン名前空間:店舗Pythonインタプリタのような名前が付いています:int型など、フロート、LEN、

len()
int()

ライフサイクル:インタプリタを有効にするために始めたとき、インタプリタが閉じているときに、失敗します。

グローバル・ネームスペース

グローバルネームスペース:ビルトインとローカル名に加えて、残りの部分のような、グローバルネームスペースに格納されている:X、FUNC、L、Z

ライフサイクル:ファイルが有効に実行された場合、ファイルの実行後に期限切れになります。

ローカル名前空間

ローカル名前空間:関数呼び出しの際に生成された格納するために使用される関数本体の名前。

def f1():
    x = 1
    def f2():  # f2就是局部名称空间
        pass
    f2()  

ライフサイクル:とき力のファイル関数呼び出し、関数の実行が失敗した後。

ロード順序(強制検査)

内蔵のネームスペース - >グローバル名前空間 - >ローカル名前空間

(強制検査)の順序を探します

現在のネームスペースを検索し、その後徐々にアップ電流がローカライズされている場合は、順序がローカルにある - >グローバル - >内蔵

スコープ

スコープ:地域の役割

定義フェーズにおけるスコープ機能の関係は十分に確認されています

そこに同じ名前の関数や機能の変数の間にあるが、これは、2つの変数、異なるスコープには何も持っていないかもしれません

グローバルスコープ

+グローバル組み込みに適用され、内蔵されたグローバルすなわち、ビルトインもグローバルに変更することができますを変更することができ

ローカルスコープ

ローカルに定義された名前で、それは地域にのみ適用され、部分的にしか取得

x =100
def f1():
    x =1
    print(x)  # 定义阶段
f1()

1

グローバルローカルグローバル(理解、共通のインタビュー)を変更

x =100
def f1():
    global x
    x =1
    # print(x)

f1()
print(x)

1

ローカル外部非ローカルへ

xxxxxxxxxx9 1   def f1():2    x =13    def f2():4        nonlocal x 5        x =36    f2()7    print(x)8f1()93pythono

おすすめ

転載: www.cnblogs.com/raynduan/p/10953535.html
おすすめ