1. 程式人生 > 程式設計 >React引入antd-mobile+postcss搭建移動端

React引入antd-mobile+postcss搭建移動端

函數語言程式設計

  高階函式:一個函式可以接收另一個函式作為引數

    map() : map(function, Iterrable) :將傳入的函式一次作用於序列的每個元素上,並將結果作為新的Iterator返回

# 實現,f(x) = x2, 作用於l = [1,2,3,4]
def func(x):
    return x*x
L = reduce(func, [1,2,3,4])
print(L)

    reduce() :reduce把一個函式作用在一個序列上,該函式必須接收兩個引數,reduce把結果繼續和序列的下一個元素做累積計算

# 實現[1,2,3,4,5]Z轉換為12345
def func(x,y): return x×10 + y L = reduce(func, [1,2,3,4,5,6]) print(L)

    

    filter() : filte把傳入的函式作用於每個元素,根據返回值true/false 過濾元素

# 將序列中的空字串刪除

def not_empty(s):
    return s and s.strip()

# print(list(filter(not_empty, ['A', '', 'B', None, 'C', '  '])))
# 使用filter篩選出回數
def is_palindrome(n):
     
return str(n) == str(n)[::-1] output = filter(is_palindrome, range(1, 1000)) print('1~1000:', list(output))

 

    sorted():可接收一個key函式實現自定義的排序,將函式作用於每一個元素,按key函式返回的結果進行排序

print(sorted([36, -25, -68, 79], key=abs))
print(sorted(['bob', 'about','Zoo']))
print(sorted(['bob', 'about','Zoo'], key=str.lower))

>>> [-25, 36, -68, 79] ['Zoo', 'about', 'bob'] ['about', 'bob', 'Zoo']
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]

def by_name(t):
    return t[0].lower()

def by_score(t):
    return t[1]

print(sorted(L, key=by_score, reverse=True))
print(sorted(L, key =by_name ))

  返回函式:閉包,將函式作為結果值返回(返回函式名)

# 計數器,每次呼叫counterA()時,+1
def createCounter():
    f = [0]
    def counter():

        f[0] = f[0] + 1
        return f[0]
    return counter

counterA = createCounter()
print(counterA(),counterA())

  

  匿名函式:lambda x:(x為函式引數)不需要顯示定義函式,使用表示式的結果作為返回值

L = list(filter(lambda x: x %2 ==1 , range(1,20)))
print(L)

  裝飾器:呼叫函式時,不修改函式定義,但呼叫時動態增加功能的方式

# 裝飾器函式
def log(func):
    @functools.wraps(func)
    def wrapper(*args, **kw):
        print(func.__name__)
        return func(*args, **kw)
    return wrapper

@log  #將裝飾器裝飾在now函式上
def now():
    print('2015-3-25')

now()
print(now.__name__)

    當裝飾函式需要傳入引數時

#  當裝飾器函式需要傳入引數時:
def log(text):
    def derectorA(func):
        @functools.wraps(func)
        def wrapper(*args, **kw):
            print(func.__name__)
            return func(*args, **kw)

        return wrapper
    return derectorA

@log('execute')
def now():
    print('2021-6-23')

now()
print(now.__name__)

  

    例:設計一個裝飾器,開啟多裝飾函式的執行時間

# 設計decoratoe,列印函式的執行時間
import time
def metric(fn):
    @functools.wraps(fn)  # 作用是讓所裝飾的函式名稱等屬性複製到wrapper上,(保證依賴函式簽名的程式碼執行正常)
    def wrapper(*args, **kw):
        t1 = time.time()
        print(t1)
        fn(*args, **kw)
        t2 = time.time()
        print(t2)
        print('%s executed in %s ms' % (fn.__name__, t2-t1))
        return fn(*args, **kw)

    return wrapper

# 測試
@metric
def fast(x, y):
    time.sleep(0.0012)
    return x + y

@metric
def slow(x, y, z):
    time.sleep(0.1234)
    return x * y * z

f = fast(11, 22)
s = slow(11, 22, 33)

  偏函式:將函式的某些引數固定,返回一個新的函式(與預設引數的作用一致,降低函式呼叫的難度)

# 實現轉換二進位制字串,int(x, base =2)[應用於批量轉換二進位制字串]

int2 = functools.partial(int, base = 2)  #偏函式
print(int2('100011'))
print(map(int2, ['110', '100', '001']))