python函數基礎

python中,函數是允許嵌套的。
在這裏插入圖片描述

創建函數

在這裏插入圖片描述
不想讓函數執行任何內容 可以使用pass語句。但此函數可以被調用,只是沒有內容去執行而已。

函數的作用域 函數的被訪問到的範圍

函數 名稱空間
每個文件模塊都是一個全局作用域。
全局變量 : 位於函數的外部 或者函數內部的 global
本地變量: 函數內部的變量
在這裏插入圖片描述
在這裏插入圖片描述
global x
在這裏插入圖片描述
變量名解析:LEGB原則
在這裏插入圖片描述
local(function) --> Enclosing function locals --> Global(module) —> built-in(python)
作用域越小,優先級越高。
在這裏插入圖片描述
## python 閉包(工廠函數):
在python的嵌套函數中,定義在外層函數中但是卻由內層函數所引用的變量在外層函數返回時,如果說外層函數直接返回的內層函數作爲返回結果,那麼我們再次調用內層函數時,可以仍然使用內層函數中所引用的外層函數中的變量,它實現了記憶的效果。這種特殊的方式在python中叫做閉包。
在這裏插入圖片描述
python 函數的參數
def functionName(arg1,arg2,…)
在這裏插入圖片描述
那麼,考慮一下,如果我們在函數中修改傳遞過去的參數值,那麼實際上它會不會改變呢?
對於不可變對象如下圖中的m和n的值不會發生變化。
在這裏插入圖片描述
對於可變對象,如列表,則不一樣,傳遞的參數相當於潛複製,在原處修改該變量。下圖所示:
在這裏插入圖片描述
但是如果我們不想改變原來定義變量,可以傳遞單個的不可便元素。
在這裏插入圖片描述
在這裏插入圖片描述
### 參數匹配模型:
在這裏插入圖片描述
#位置參數,從左向右精確匹配。
在這裏插入圖片描述
#關鍵字參數指定傳遞的值,按關鍵字名稱匹配:
在這裏插入圖片描述
#混用位置參數和關鍵字參數
會用上面兩種方式(位置參數和關鍵字參數)時,位置參數只能是在關鍵字參數的左側。(所有的位置參數,所有的關鍵字參數)
在這裏插入圖片描述
默認值參數:會有默認值和無默認值的參數時,無默認值參數需放在默認值參數的左邊
在這裏插入圖片描述
可變參數:用於收集任意多基於位置或關鍵字的參數。
調用函數時候使用可變參數要求:
1.定義函數時使用 *參數 : 收集位置參數
2.定義函數時使用 **參數:收集關鍵字參數

在這裏插入圖片描述
在這裏插入圖片描述
Python2中位置參數只能位於可變參數的左側。
在這裏插入圖片描述
在這裏插入圖片描述
默認值參數與可變參數混合使用:
在這裏插入圖片描述
*參數 **參數混合使用:
在這裏插入圖片描述
位置參數,默認值參數, * 參數 **參數的混合使用:
在這裏插入圖片描述
在這裏插入圖片描述
注意默認值參數不能放在**參數的後面 ,但是可以放在*參數的後面。

在這裏插入圖片描述
在這裏插入圖片描述
可變參數解包(參數分解):調用函數時候,使用*開頭的參數,可用於將參數集合打散,從而傳遞任意多基於位置或關鍵字的參數。
回顧:變量的分解賦值
在這裏插入圖片描述
函數的分解參數(可變參數解包)如圖:

在這裏插入圖片描述
定義是爲了分解,調用是爲了整合.

在這裏插入圖片描述
如果不使用可變參數,則必須使用使得某個集合或列表中的元素個數與函數參數的個數一致。如下圖:
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

匿名函數 lambda

在這裏插入圖片描述lambda args:expression

在這裏插入圖片描述
在這裏插入圖片描述
lambda起到了一個函數速寫的作用
在這裏插入圖片描述

函數基礎小結

函數:
1:名稱
2:python閉包(工廠函數) :
3:def funcName(arg1,arg2,arg3,…)
4:參數傳遞形式:
        位置參數: 從左向右精準匹配
        關鍵字參數:案關鍵字名稱匹配
                混合上面兩種方式時候:左邊是所有位置參數,右邊是所有關鍵字參數。
        定義函數時候使用默認參數:有默認值的參數
                混用有默認值和無默認值的參數時候:無默認值參數放在左邊。
        調用函數時候使用可變參數要求:
                定義函數時候使用* 參數收集位置參數
                定義函數時候使用* *參數: 收集關鍵字參數

完結

下一篇 python函數式編程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章