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