python函數參數,名稱空間,以及函數嵌套
一. 函數參數–動態傳參
1.1動態位置接受參數,在參數位置編寫*表⽰示接收任意內容
註意:
動態參數與位置參數的關系
默認參數和動態參數的關系
小結: 順序: 位置參數, 動態參數*, 默認值參數
1.2 動態接收關鍵字參數
在python中可以動態的位置參數,但是*這種情況隻能接收位置參數無法接收關鍵字參數.
可以使用**來接收動態關鍵字參數
實例:
註意:關鍵字參數與未知參數關系
所以關鍵字參數必須在位置參數後⾯面. 由於實參是這個順序. 所以形參接收的時候也是這個順序.
也就是說位置參數必須在關鍵字參數前面. 動態接收關鍵字參數也要在後面
最終順序(*):位置參數 > *args > 默認值參數 > **kwargs
1.3無敵傳參 * args, * * kwargs 一起使用
實例:
1.4 動態參數的另⼀一種傳參⽅方式:
在實參位置上給一個序列,列表,可迭代對象前⾯面加個表示把這個序列按順序打散.
在形參的位置上的表⽰示把接收到的參數組合成⼀一個元組
如果是⼀一個字典, 那麼也可以打散. 不過需要⽤用兩個*
在實參位置: 打散
二. 命名空間
我們給存放名字和值的關系的空間起⼀一個名字叫:命名空間. 我們的變量量在存儲的時候就是存儲在這片空間中的.
命名空間分類:
- 全局命名空間–> 我們直接在
py
⽂文件中, 函數外聲明的變量都屬於全局命名空間 - 局部命名空間–> 在函數中聲明的變量會放在局部命名空間
- 內置命名空間–> 存放
python
解釋器為我們提供的名字,list
,tuple
,str
,int
這些都是內置命名空間
加載順序:
- 內置命名空間
- 全局命名空間
- 局部命名空間(函數被執行的時候)
取值順序:
- 局部命名空間
- 全局命名空間
- 內置命名空間
作用域: 作用域就是作用范圍, 按照生效范圍來看分為 全局作用域和局部作用域
全局作用域: 包含內置命名空間和全局命名空間. 在整個文件的任何位置都可以使用(遵循從上到下逐行執行).
局部作⽤用域: 在函數內部可以使⽤.
作用域命名空間:
- 全局作用域: 全局命名空間 + 內置命名空間
- 局部作用域: 局部命名空間
可以通過globals()
函數來查看全局作⽤用域中的內容, 也可以通過locals()
來查看局部作用域中的變量量和函數信息
三. 函數的嵌套
- 隻要遇⻅見瞭了()就是函數的調用. 如果沒有()就不是函數的調⽤
- 函數的執行順序
四. 關鍵字global和nonlocal
global:
首先我們寫這樣一個代碼, 首先在全局聲一個變量, 然後再局部調用這個變量量, 並改變這個變量的值
例1:
例2:
nonlocal
表示在局部作用域中, 調用父級命名空間中的變量
總結:
global
: 在局部引入全局的內容, 可以升華一個變量為全局變量
到此這篇關於python
函數參數,名稱空間,以及函數嵌套的文章就介紹到這瞭,更多相關python
函數參數,名稱空間,以及函數嵌套內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python變量作用域與列表入門詳解
- Python eval() 函數看這一篇就夠瞭
- Python函數命名空間和作用域(Local與Global)
- django中的*args 與 **kwargs使用介紹
- 淺談Python中的函數(def)及參數傳遞操作