python 函數(二)

1、高階函數xss

 一、函數名能夠賦值
二、函數名能夠做爲函數參數
三、函數名能夠做爲函數的返回值
eg:
 
 
 
 
def f1(n):
    return n*n

def f2(a, b, f):
    return f(a) + f(b)   # 此處f() 至關於 f1()

num = f2(1, 2, f1)
print(num)

>>> 5函數

2、遞歸函數spa

 1.本身調用本身;
 2.有一個結束條件;

eg1: 遞歸求5!code

def fat(n):
    if n == 1:
        return 1
    return n*fat(n-1)

print(fat(5))

>>> 120blog

eg2: 遞歸求斐波那契數列(輸入位數,輸出該位置所對應的值)遞歸

斐波那契數列: 0 1 1 2 3 5 8 13 21 34 55(從0、1開始,後面的任意一個數爲她前面兩個數的和)
def fibo(n):
    if n <= 1:
        return 1
    return fibo(n-1) + fibo(n-2)


print(fibo(8))     # 輸出斐波那契數列的第8個數(是從0開始計數的)

>>> 21字符串

3、內置函數字符串處理

1.all() 函數class

all()  # 若是括號裏面的內容爲真,返回True,不然返回False

2.eval() 函數  import

eval()     # 至關於一個計算器,在括號裏面直接輸入要計算的內容

3.filter() 函數,   至關於過濾器,不符合條件的過濾掉,返回的值是過濾後的內容

eg:
st = ['a', 'b', 'c', 'd']

def fun(a):
    if a != 'a':   # 篩選條件
        return a

ret = filter(fun, st)
print(list(ret))

>>> ['b', 'c', 'd']

4.map()   字符串處理

st = ['c', 'd']

def fun(a):
    return a + "xss"  # 給列表中的每一個元素後面加上‘xss’ 而後輸出

ret = map(fun, st)

print(ret) # map  object的迭代器, 輸出的是存放該函數的地址
print(list(ret))

>>>   <map object at 0x000001E7903B40B8>
          ['cxss', 'dxss']

5.reduce()函數    疊加器

from functools import reduce    # 使用reduce() 要加上該調用語句

def add(x, y):
    return x + y

print(reduce(add, range(1, 10)))   # 輸出1-9相加的和
# 執行機制:取出range中的前兩個數1和2分別賦值給x和y,執行adda()函數後把結果放入range中(此時range中數變爲3 3 4 5 6 7 8 9),以此類推

6.lambda()   匿名函數

from functools import reduce      # 使用reduce() 的調用語句
print(reduce(lambda x, y: x*y, range(1, 7)))       # 計算6!
# 執行機制:取出range中的前兩個數1和2分別賦值給x和y,而後相乘,結果放入range中(此時range中數變爲2 3 4 5 6),以此類推

4、關鍵字 global 和 nonlocal (很少解釋,直接上例子)

eg1:

count = 10

def f():
   global count  # 聲明count是一個全局變量
    print(count)
    # 若是前面不用global聲明,函數報錯->UnboundLocalError: local variable 'count' referenced before assignment
 # 緣由:count變量在定義以前調用,既全局變量不能在局部被修改
    count = 5
    print(count)

f()

>>> 10

        5

eg2:

def outer():
    count = 10

    def inner():
        nonlocal count  # 局部變量用nonlocal關鍵字 聲明
         count = 20
        print(count)
    inner()
    print(count)

outer()

>>> 20

        20

相關文章
相關標籤/搜索