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