1. 程式人生 > >python 基礎篇 10 函數進階

python 基礎篇 10 函數進階

包含 font -s 就會 med http 內部 沒有 9.png

本節主要內容:
1. 函數參數--動態傳參
2. 名稱空間, 局部名稱空間, 全局名稱空間, 作?域, 加載順序.
3. 函數的嵌套
4. gloabal, nonlocal關鍵字

?. 函數參數--動態傳參
之前我們說過了傳參, 如果我們需要給?個函數傳參, ?參數?是不確定的. 或者我給?個
函數傳很多參數, 我的形參就要寫很多, 很?煩, 怎麽辦呢. 我們可以考使?動態參數.
形參的第三種: 動態參數
動態參數分成兩種
:::

1--->>>動態接收位置參數

首先,先回顧依稀位置參數:

技術分享圖片

技術分享圖片

註意:動態傳參的過程中,動態參數必須在位置參數後面

錯誤實例:

技術分享圖片

技術分享圖片

默認值參數:

技術分享圖片

這時候,我們發現,如果不給出關鍵字傳參,所有的默認值參數都是生效的

總結:參數順序---->>>>位置參數-----動態參數------默認值參數

2.動態接收關鍵字參數:

技術分享圖片

技術分享圖片

最終順序:

位置參數------>*args-------->默認值參數--------------->**kwargs

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

二:命名空間:

python解釋器開始執?之後, 就會在內存中開辟?個空間, 每當遇到?個變量的時候,
把變量名和值之間的關系記錄下來, 但是當遇到函數定義的時候, 解釋器只是把函數名讀入內
, 表?這個函數存在了, ?於函數內部的變量和邏輯, 解釋器是不關?的. 也就是說?開始
的時候函數只是加載進來, 僅此?已, 只有當函數被調?和訪問的時候, 解釋器才會根據函數
內部聲明的變量來進?開辟變量的內部空間. 隨著函數執?完畢, 這些函數內部變量占?的空
間也會隨著函數執?完畢?被清空.

技術分享圖片

技術分享圖片

加載順序:

內置命名空間-------->>>>全局命名空間--------->>>>>局部命名空間(函數被執行的時候)

取值順序:

局部命名空間-------->>>>>>全局命名空間---------->>>>內置命名空間

技術分享圖片

作?域: 作?域就是作?範圍, 按照?效範圍來看分為 全局作?域和局部作?域
全局作?域: 包含內置命名空間和全局命名空間. 在整個?件的任何位置都可以使?(遵循
從上到下逐?執?).
局部作?域: 在函數內部可以使?.

作?域命名空間:
1. 全局作?域: 全局命名空間 + 內置命名空間
2. 局部作?域: 局部命名空間

技術分享圖片

三,函數的嵌套

1. 只要遇?了()就是函數的調?. 如果沒有()就不是函數的調?
2. 函數的執?順序

技術分享圖片

. 關鍵字globalnonlocal
?先我們寫這樣?個代碼, ?先在全局聲明?個變量, 然後再局部調?這個變量, 並改變這
個變量的值

技術分享圖片

技術分享圖片

nonlocal 表?在局部作?域中, 調??級命名空間中的變量.

技術分享圖片

這個global和nonlocal比較繞 需要多理解一下

python 基礎篇 10 函數進階