パラメータ→匿名関数→作成→ビルダー→装飾


関数のパラメータ
パラメータタイプ:関数のパラメータについては、def(*args、**kwargs)の表現形式がいくつかのコードでよく見られます.定義されているのは、メタグループと辞書です.
*args     ——    tuple(1,)
**kwargs   ——   dict(“k”:“v”)

例:
fun(*args,**kwargs )
fun(1,2,3,4,5,a=10,b=40 )

関数のパラメータを簡単に定義することもできます.
def add(*args):
    total = 0
    for i in args:
        total += i
    print("total = {}".format(total))

if __name__ == '__main__':
    add(1,2,3,4,5)

Pythonにはソートsortソート関数のクラスがあります.
def add(*args):
    total = 0
    for i in args:
        total += i
    print("total = {}".format(total))

def sorDictValue(dict1):
    print(sorted(dict1.items(),key=lambda item:item[0],reverse=False))
'''sorted   dict1    key        ,
    dict1.items()          keys   value       '''

if __name__ == '__main__':
    add(1,2,3,4,5)
    s1 = lambda x,y:x+y
    print(s1(10,20))
    aaa = dict(a=100,b=10,c=50)
    l = list()
    sorDictValue(aaa)

匿名関数
匿名関数とは、名前のない関数ですが、なぜ匿名関数が必要なのか、その役割は何ですか.lambda関数は、単行を迅速に定義する最小関数であり、関数が必要な場所で使用することができます.
def fun(x,y):
    return x*y

Lambdaバージョン
r = lambda x,y:x*y
print(r(10,20))

ジェネレータとジェネレータ
リスト生成形式:[exp for val in collection if condition]、例えば[x*x for x in range(10) if x*x%2==0]ジェネレータ(generator):メソッド1;(exp for val in collection if condition)例えば、(x*x for x in range(1,30) if x%2 ==0)メソッド2:yieldキーワードを使用すると、yield文を含む関数がわざわざジェネレータにコンパイルされます.yieldはreturnと理解できますが、終了するのではなく、保留するだけで、リカバリ時にyieldの下から実行します.
#      
a = [x*x for x in range(1,30) if x%2 ==0]
print(a)
print(type(a))
# 

y=list()
x=[1,2,3,4,5]
y+=x
y.append(100)
print(y)
print(x)

#       generator
b = (x*x for x in range(1,30) if x%2 ==0)
print(b)
print(type(b))
# 

def test(l):
    for i in l:
        yield i        # yield    return
        print("i = {}".format(i))

m = test([1,2,3,4,5,6,7,8,9])
print(type(m))
# 

リスト生成式は、式の結果リストを直接返します.ジェネレータは、式の結果に対する計算参照を含むオブジェクトです.ジェネレータがすべてのデータを一度にリストしないことをループで直接出力できます.使用するときにリストします.これにより、メモリ使用率が低下します.
装飾器の役割
装飾器は本質的にPythonの関数であり、他の関数がコードの変動を必要とせずに追加機能を追加することができ、装飾器の戻り値も関数オブジェクトである.ログの挿入、パフォーマンステスト、トランザクション、キャッシュ、パーミッションチェックなど、必要なシーンでよく使用されます.装飾器はこのような問題を解決する絶好の設計であり、装飾器があれば、関数機能自体に関係のない同じコードを大量に抽出し、再利用を続けることができます.簡単に言えば、関数自体を変えずに、関数の前または後ろに追加の機能を追加することです.
#    
def hello():
    print("hello world")
hello()

#     
def hello():
    print("###########start###########")
    print("hello world")
    print("############end############")
hello()