函式的進階

對不起我是啞巴發表於2018-11-01

函式的進階

動態引數

*args  動態位置引數 

*在形參位置叫做聚合

以位置的形式傳參  得到的是元組

**kwargs  動態預設引數

**在形參的時候是聚合  

以關鍵字的形式傳參  得到的是字典

args 和 kwargs 是可以更換的,但程式設計師約定都是它

用途

在不明確接受引數的數量時,用*args 和 **kwargs

引數位置

形參 : 位置引數 > 動態位置引數(*args) > 預設引數 > 動態預設(關鍵字)引數(**kwargs)

實參 : 位置引數 > 關鍵字引數

在實參呼叫的時候,*是將可迭代的物件打散,字典是將鍵取出

在形參處出現*就是在聚合

在實參呼叫的時候,**就是將字典打散成 關鍵字引數 (鍵 = 值)

在形參出出現**就是將關鍵字引數聚合成一個字典

函式的註釋

定義完函式後寫 """ """ 即可新增註釋

檢視註釋  print(函式名.__doc__)

檢視函式名 print(函式名.__name__)

名稱空間

內建空間:內建空間中所有程式碼

全域性空間:自己寫的py檔案

區域性空間:函式中的程式碼

載入順序:  內建空間 > 全域性空間 > 區域性空間

取值(查詢)順序:區域性空間 > 全域性空間 > 內建空間    (找不到就報錯)

作用域

全域性作用域:內建+全域性 = 全域性作用域

區域性作用域:函式內的就是區域性作用域

global 和 nonlocal

global:宣告要在全域性裡修改一個變數 在區域性修改全域性變數,沒有就建立一個

nonlocal:在一個區域性空間內,nonlocal會修改離它最近的變數,如果上一層沒有,就繼續向上找,直到區域性空間頭部

函式的巢狀

 

相關文章