python之路 day10 函式高階

2022-08-31 23:12:36 字數 2375 閱讀 3241

一、函式引數--動態傳參

1、動態接收位置引數

在引數位置編寫 * 表示接收任意內容

動態接收引數的時候要注意:動態引數必須在位置引數後面

這時程式執行會報錯。因為前面傳遞進去的所有位置引數都被 *food接收了。a和b永遠接收不到引數

2、動態接收關鍵字引數

在python中可以動態的接收引數,但是 * 這種情況只能接收位置引數無法接收關鍵字引數。

在python中使用 ** 來接收動態關鍵字引數

最終順序

位置引數 > *args > 預設值引數 > **kwargs

這四種引數可以任意的進行使用。

如果想接收所有的引數:

def func(*args, **kwargs):

print(args, kwargs)

func("麻花","驢打滾", wtf="胡辣湯")

動態引數的另一種傳參方式:

def func(*args):

print(args)

lst = [1, 4, 7]

func(lst[0], lst[1], lst[2])

func(*lst)  #  可以使用 * 把乙個列表按順序打散

s = "臣妾做不到"

func(*s)  # 字串也可以打散(可迭代物件)

在形參的位置上的* 表示把接收到的引數組合成乙個元組

如果是乙個字典,那麼也可以打散,需要兩個**

def fun(**kwargs):

print(kwargs)

dic =

fun(**dic)

3、函式的注釋

二、命名空間

在python直譯器開始執行之後,就會在記憶體中開闢乙個空間,每當遇到乙個變數的時候,就把變數名和值之間的

關係記錄下來,但是當遇到函式定義的時候,直譯器只是把函式名讀入記憶體,表示這個函式存在了,至於函式內部的

變數和邏輯,直譯器是不關心的。也就是說一開始的時候函式只是載入進來,僅此而已,只有當函式被呼叫和訪問的時候

直譯器才會根據函式內部宣告的變數來進行開闢變數的內部空間。隨著函式執行完畢,這些函式內部變數占用的空間也會

隨著函式執行完畢而被清空。

def fun():

a = 10

print(a)

fun()

print(a)  # a不存在了已經

我們給存放名字和值得關係的空間起乙個名字叫:命名空間。我們的變數在儲存的時候就是儲存在這片空間中的。

命名空間分類:

1、全域性命名空間--> 我們直接在py檔案中,函式外宣告的變數都屬於全域性命名空間

2、區域性命名空間--> 在函式中宣告的變數會放在區域性命名空間

3、內建命名空間--> 存放python直譯器為我們提供的名字,list, tuple ,str ,int 這些都是內建命名空間

載入順序:

1、內建命名空間

2、全域性命名空間

3、區域性命名空間(函式被執行)

取值順序:

1、區域性命名空間

2、全域性命名空間

3、內建命名空間

作用域:作用域就是作用範圍,按照生效範圍來看分為 全域性作用域和區域性作用域

全域性作用域:包含內建命名空間和全域性命名空間。在整個檔案的任何位置都可以使用(遵循從上到下逐行執行)

區域性作用域:在函式內部可以使用

作用域命名空間:

1、全域性作用域: 全域性命名空間 + 內建命名空間

2、區域性作用域: 區域性命名空間

我們可以通過globals()函式來檢視全域性作用域中的內容,也可以通過locals()來檢視區域性作用域中的變數

和函式資訊

三、函式的巢狀

1、只要遇見了()就是函式的呼叫,如果沒有()就不是函式的呼叫

2、函式的執行順序

四、關鍵字global 和 nonlocal

global 表示,不再使用區域性作用域中的內容了。而改用全域性作用域中的變數

nonlocal 表示在區域性作用域中,呼叫父級命名空間中的變數

python之路 day10 閉包函式

1.命名關鍵字引數 格式 在 後面的引數都是命名關鍵字引數 特點 1.必須被傳值 2.約束函式的呼叫者必須按照key value的形式傳值 3.約束函式的呼叫者必須用我們指定的key名 1 def auth args,kwargs 2 3使用方式auth name egon pwd 123 4 pa...

python學習之路 協程 day10

三.協程應用 greenlet greenlet和gevent必須要安裝 此處在pycharm上安裝 必須提前安裝easy install,pip 此處用的python27,python30上pip安裝後一直無法使用,會繼續跟進此問題 g2.switch 切換 print 23 g2.switch ...

python基礎 day 10 函式初識

一 內容回顧 1 檔案的操作 檔案操作三部曲 1 開啟檔案 2 檔案的控制代碼操作 3 關閉檔案 檔案路徑pat,encoding,mode 2 讀 寫 追加 檔案讀取 r,rb,r r b read 全部讀取 readline 一行一行讀取 strip readlines 全部讀取出來,每一行構造...