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!

推薦閱讀: