Pythonでの閉パッケージの使用原理と注意事項を遊ぶ
2641 ワード
,
def fuc(args):
print(" :",args)
return args +1
# 1
fuc(10)
print("*"*20)
f = fuc(10) #
print(id(f),id(fuc(10)))
f # fuc(10)
print(f,fuc(10)) #11,11
# 2
f1 = fuc # () ,
print(id(f1),id(fuc),f1,fuc)
#9350288 9350288
fuc(11) # : 11
f1(11) # : 11
1.クローズとは
以下に,閉パケットとは,1つの関数のうちfuncにもう1つの内部関数resultを定義することである.この内部関数resultは、外部関数
func
のパラメータおよび局所変数を参照(実際には参照しなくてもよい)することができる.また、内部関数の関数体を外部関数の戻り値(関連パラメータと変数は戻り関数に保存されます)として関数に返します.このような内部関数の形式は「クローズドパッケージ(Closure)」と呼ばれ、結局クローズドパッケージは高度な関数の使用である.def func(a):
print("this is :",a)
def result(x,y):
sum = a*x +y
print("sum is :",sum)
return sum
return result # , result(). result func,
------------------------- ---------------------------------------
1.
func(10) # func print.
print("------------")
f1 = func(10)
f1(10,20) # func(10)(10,20), result 。
print(f1(10,20)) # 。
'''
this is : 10
------------
this is : 10
sum is : 120
sum is : 120
120
'''
内部関数(閉パッケージ)は必ずしも外部関数の変数を参照する必要はありませんが、彼はこの権限を持っています.外部関数は、権限チェックなどに使用される場合があります.
def func1():
print(" , , ")
pass
num = 1000
def result1(x,y): #
sum = x +y
print("sum is :",sum)
return sum
return result1 # , result(). func ,
f1 = func1()
f1(10,20)
'''
, ,
sum is : 30
'''
内部関数外部関数の変数の変更
def counter(start=0):
def incr():
nonlocal start
# nonlocal python3 ( , , global)
start += 1
return start
return incr
c1 = counter(5)
print(c1())
print(c1())
c2 = counter(50)
print(c2())
print(c2())
print(c1())
print(c1())
print(c2())
print(c2())
'''
6
7
51
52
8
9
53
54
'''
2.閉鎖の用途とメリット
1.クローズドパッケージの機能:
1. , , ,
2. , 。
3. , ,
2.クローズド・パッケージの用途:
閉包が本当に役に立つのは装飾器での使用であり、装飾器の強力な機能は閉包に基づいて実現されている.
統一声明:オリジナルブログの内容については、一部の内容がインターネットから参照されている可能性があります.オリジナルリンクがあれば参照を宣言します.オリジナルリンクが見つからない場合は、権利侵害がある場合は削除に連絡してください.ブログの転載については、オリジナルリンクがあれば声明します.オリジナルリンクが見つからない場合は、権利侵害がある場合は削除に連絡してください.