2019年8月9日の学習仕上げ

2019年8月9日の学習仕上げ

Functionオブジェクト

関数、すなわち関数は、データ処理として使用することができる、ファーストクラスのオブジェクトです。

関数オブジェクトの1 4つの機能

1.参照

x = 'hello nick'
y = x

f = func
print(f)

<function func at 0x10af72f28>

関数に渡されるパラメータとして2。

len(x)


def foo(m):
    m()


foo(func)
from func

3.戻り値の関数として使用することができます

def foo(x):
    return x


res = foo(func)
print(res)
res()

<function func at 0x10af72f28>

from func

前記要素のタイプは、容器として使用することができます

l = [x]

function_list = [func]
function_list[0]()

from func

ネストされた関数

1.機能ネストされた定義

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

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

F2から

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

def max2(x, y):
    if x > y:
        return x
    else:
        return y


def max4(a, b, c, d):
    res1 = max2(a, b)
    res2 = max2(res1, c)
    res3 = max2(res2, d)
    return res3


print(max4(1, 2, 3, 4))

4

名前空間とスコープ

1.名前空間

名前空間(ネームスペース):インメモリ管理際にその章では、我々は変数を作成すると述べ、実際にメモリに新しいスペースを開いています。しかし、我々は、実際には、メモリ内の変数名と変数のメモリストレージ間の結合関係の余地がある、変数名を格納避けてきた、この空間は、名前空間と呼ばれています。

1.1ビルトイン名前空間

ビルトイン名前空間:ストアPyhtonインタプリタ名が付いています、などint、float、len

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

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

グローバル名前空間:ビルトインとローカル名に加えて、残りは、次のコードとして、グローバル名前空間に格納されていますx、func、l、z

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

x = 1

def func():
    pass

l = [1, 2]

if 3 > 2:
    if 4 > 3:
        z = 3

1.3ローカル名前空間

ローカル名前空間:ファンクション・コールの間に生成記憶する機能本体の名称、例えば次のコードとしてf2

ライフサイクル:ファイルが実行されると、関数呼び出しの際に有効になる機能の実行後に期限切れ

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

f1() 

2.適用範囲

ドメインは、すなわち作用領域範囲領域を指します。

グローバルスコープ:グローバル・効果的な、世界的な生存、および組み込みの名前空間のグローバルネームスペース。

2.1グローバルスコープ

# 全局作用域
x = 1


def bar():
    print(x)


bar()
1

2.2ローカルスコープ

# 局部作用域
def f1():
    def f2():
        def f3():
            print(x)
        x = 2
        f3()
    f2()


f1()
2

2.3 注意点

# 作用域注意点
x = 1


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


def f2():
    x = 2
    f1()


f2()
1

スコープの関数オブジェクトの2.4応用+

# 作用域应用
def f1():
    def inner():
        print('from inner')
    return inner


f = f1()  # 把局部定义的函数放在全局之中


def bar():
    f()


bar()
from inner

おすすめ

転載: www.cnblogs.com/zhangmingyong/p/11329304.html