9.25 函數小結

函數的定義

def 函數名():
    pass

函數的三種定義方式

空函數

def f():
    pass

有參函數

def f(x):
    print(x)

無參函數

def f():
    print()

函數的調用

函數名()

函數的返回值

1.return能夠返回值
2.return能夠終止函數
3.return能夠返回多個值,用元組返回python

函數的參數

形參

位置形參

從左到右依次接收位置實參編程

默認形參

具備默認值,必須放在位置形參後面閉包

實參

位置實參

從左到右依次傳值給位置形參app

關鍵字實參

按照形參名傳值,必須在位置實參後面函數

可變長參數

*

*形參

接收多餘位置實參,用元組接收code

*實參

打散可迭代對象,看成位置實參傳給形參對象

**

**形參
接收多餘關鍵字實參,用字典接收

**實參
打散字典,看成關鍵字實參傳給形參

*形參**形參
接收全部多餘參數

函數對象

def func():
    pass

引用

f1 = func

做爲容器類元素

lt = [func]

做爲函數返回值

def f2():
    return func
f3 = f2()

做爲函數參數

def f2(func):
    pass
f2(func)

函數嵌套

def f1():
    def f2():
        pass

名稱空間與做用域

內置名稱空間

內置函數遞歸

全局名稱空間

除了內置和局部,剩下的都是全局索引

局部名稱空間

函數內部的作用域

執行順序

內置→全局→局部

搜索順序

當前位置:局部→全局→內置→報錯

全局做用域

全局與局部沒有聯繫

局部做用域

內局部與外局部沒有聯繫

global

讓全局與局部進行轉換

nonlocal

讓內局部與外局部進行轉換

可變數據類型會打破做用域關係

閉包函數

def a(x):
    def b():
        print(x)
    return b
c = a(100)
c()

裝飾器

1.本質就是函數
2.不修改源代碼
3.不改變調用方式

二層裝飾器

二層裝飾器模版

def deco(func):
    def wrapper(*args,**kwargs):
        res = func(*args,**kwargs)
        return res
    return wrapper
    
@deco
def index()
    pass

三層裝飾器

迭代器

可迭代對象

含有iter方法的 → 除了數字

迭代器對象

含有iter和next方法的 → 只有文件

三元表達式

列表推導式

字典生成式

生成器表達式

g = (i for i in range(10)
print(next(g)) ##g.__next__()

生成器

含有yield的函數

yield

1.暫停函數
2.一個next能夠拿到一個yield值

遞歸

函數調用函數自己,要有退出條件

匿名函數

lambda 參數:返回值

內置函數

enumerate 獲取索引+值

面向過程編程

相似流水線

相關文章
相關標籤/搜索