人工知能シリーズ-Pythonシリーズ(8)装飾器=高次関数+関数ネスト+クローズド


転載は先見を明記してください.http://my.csdn.net/
原文の住所:https://blog.csdn.net/pcaxb/article/details/91994655
人工知能シリーズ-Pythonシリーズ(8)装飾器=高次関数+関数ネスト+クローズド
目次
人工知能シリーズ-Pythonシリーズ(8)装飾器=高次関数+関数ネスト+クローズド
1.飾り器の初探
2.高次関数
3.関数の入れ子
4.クローズド
 5.関数クローズド拡張
6.飾り器+@文法飴
1)関数の運転時間を計算するデコレーション
 2)飾り器に戻り値を加算する
3)飾り器にパラメータを加える
4)飾り器にパラメータを加える
6.ストレス解消シーケンス
1)複数の変数を同時に定義する
2)リストの最初の要素と最後の要素を取得します.
 3)2つの値を交換する
1.飾り器の初探
#     
#      ,            
#      :      ,             
#    :    +    +  

#   :
#             (      )
#             ,             
# import  time
# #       
# print(time.time())
2.高次関数
#       :
# 1).             
# 2).            
# 3).          ,         
def test01():
    time.sleep(0.5)
    print(111)


def test02(func):
    start_time = time.time()
    func()
    end_time = time.time()
    print("       :%s" % (end_time - start_time))
    return func


test01 = test02(test01)

test01()


# test01    2 ,                  
3.関数の入れ子
def father(name):
    print('from father %s' % name)

    def son():
        print('from son')

        def grandson():
            print('from grandson')

        grandson()

    # locals         
    print(111111111111, locals(), 22222222222222222)
    son()


father('   ')
4.クローズド
#                ,               ,                。          。
def father(name):
    def son():
        # name='alex'
        print('     [%s]' % name)

        def grandson():
            # name='wupeiqi'
            print('     [%s]' % name)

        grandson()

    son()


father('   ')
 5.関数クローズド拡張
湖南省の参考資料:https://www.cnblogs.com/Lin-Yi/p/7305364.html
6.飾り器+@文法飴
#     : 1) 2) 3)
#     :decr   decr2
#     :            
def decr(func):
    def decr2():  # 1)               
        func()  # 2)               

    return decr2  # 3)                
1)関数の運転時間を計算するデコレーション
def timmer_opr(func):
    def timmer_in(**kwargs):
        start_time = time.time()
        res = func(**kwargs)
        end_time = time.time()
        print("       :%s" % (end_time - start_time))
        return res

    return timmer_in
 2)飾り器に戻り値を加算する
@timmer_opr
def test04(**kwargs):
    time.sleep(1)
    print("test04     ")
    return "   test04    name=%s age=%s height=%s" % (kwargs['name'], 
kwargs['age'], kwargs.get('height') or '')


# @   
# test04 = timmer_opr(test04) #        @timmer_opr
3)飾り器にパラメータを加える
res1 = test04(**{'name': 'pca', 'age': 18})
print(res1)

res2 = test04(**{'name': 'pca', 'age': 18, 'height': 19})
print(res2)
4)飾り器にパラメータを加える
def timmer_opr_out(params):
    def timmer_opr5(func):
        def timmer_in(**kwargs):
            start_time = time.time()
            res = func(**kwargs)
            end_time = time.time()
            print("test05       :%s %s" % ((end_time - start_time), params))
            return res

        return timmer_in
    return timmer_opr5


@timmer_opr_out("         ")
def test05():
    time.sleep(0.1)
    print("test05     ")


res3 = test05()
print(res3)
6.ストレス解消シーケンス
1)複数の変数を同時に定義する
a, b, c = [1, 2, 4]
print(a, b, c)  # 1 2 4
2)リストの最初の要素と最後の要素を取得します.
ages = [1, 2, 3, 4, 5, 6, 7]
m, *_, n = ages  # m     ,n      ,_     ,       _,        
print(m, n, _)  # 1, 7  [2, 3, 4, 5, 6]
 3)2つの値を交換する
x, y = 1, 2
x, y = y, x
print(x, y)  # 2 1
    :https://www.cnblogs.com/linhaifeng/articles/6140395.html
人工知能シリーズ-Pythonシリーズ(8)装飾器=高次関数+関数ネスト+クローズド
ブログのアドレス:https://blog.csdn.net/pcaxb/article/details/91994655