組み込み関数は、クロージャを追加しました

組み込み関数は、クロージャを追加しました

組み込み関数の補数

  1. ZIP():この要素はイテレート可能オブジェクトである場合、反復することができるパラメータとしてオブジェクトのジッパー方法は、オブジェクトの対応する要素は、タプルにパッケージ、及びこれらのタプル(イテレータ)の内容を返します最短復帰の長さに応じて不整合の数、

    lst1 = [1,2,3]
    lst2 = ['a','b','c','d']
    lst3 = (11,12,13,14,15)
    for i in zip(lst1,lst2,lst3):
        print(i)
    
    结果:  (1, 'a', 11)
          (2, 'b', 12)
          (3, 'c', 13)
  2. ()ソート:ソート

    l1 = [7, 4, 1, 6,]
    print(sorted(l1)) # 形成了新的列表
    # 加key
    lst = [
        {'name': 'xiaohong', 'age': 73},
        {'name': 'xiaoming', 'age': 35},
        {'name': 'xiaoli', 'age': 25},
    ]
    print(sorted(lst,key=lambda x:x['age']))  #按照年龄排序
    print(sorted(lst,key=lambda x:x['age'],reverse=True))  #第三个参数,逆序
  3. フィルタ():濾過、パターンジェネレータ表現に対応するフィルタは、イテレータを返します

    l1 = [56, 67, 12, 34, 78, 90]
    print(i for i in l1 if i > 60)   #[67,78,90]
    print(list(filter(lambda x:x>60,l1)))   #[67,78,90]
  4. マップ():環状パターンジェネレータ式に対応します

    l1 = [56, 67, 12, 34, 78, 90]
    print(i**2 for i in l1)    #<generator object <genexpr> at 0x000001E97FFFC888>
    print(list(map(lambda x:x**2,l1)))    #[3136, 4489, 144, 1156, 6084, 8100]
  5. 削減():組み込み関数から削除のpython3、モジュールへ

    これは、確立された規則に基づいて蓄積されたタプルのメンバーのリストです

    from functools import reduce
    print(reduce(lambda x,y:x+y,[1,2,3,4,5]))  #15
    """
    第一次: x,y 1,2 求和 3  记录到内存
    第二次: x,y 3,3 求和 6  记录到内齿
    第三次: x,y 6,4 求和 10  记录到内齿
    第四次: x,y 10,5 求和 15  返回
    """

第二に、閉鎖(テストサイト、難易度)

  1. 条件を形成するクロージャ:
    • ネストされた関数に存在する閉鎖
    • 自由変数を生じる非機能グローバル変数参照の外側の層(変性)、内部関数、変数は、データのセキュリティを確保するために、実行機能消失の自由端で終了しません
    • それは最外層(参照)に戻るまで機能は、層毎の名前を返します
  2. アプリケーションパッケージの閉鎖:
    • データのセキュリティを確保
    • デコレータの性質
# 第一版
lst = []     #lst是全局变量,不安全
def func(price):
    lst.append(price)
    return sum(lst)/len(lst)

# 第二版
def func(price):
    lst = []        #自由变量
    lst.append(price)
    return sum(lst)/len(lst)

# 为了保证数据的安全,闭包
def func():
    lst = []   #自由变量
    def func1(price):
        lst.append(price)
        return sum(lst)/len(lst)
    return func1    #return是给全局复制了一份,得到了func1的函数地址
avg = func()
print(avg(100000))
print(avg(110000))
print(avg(120000))
print(avg(110000))
# 判断一个函数是不是闭包--函数中有没有自由变量
# 函数名.__code__.co_freevars 查看函数的自由变量

おすすめ

転載: www.cnblogs.com/douzi-m/p/11234963.html