python中函式的引數以及命名空間

2022-09-04 21:33:12 字數 2792 閱讀 7468

函式引數的概念

函式引數的兩大分類

形參  和  實參

形參:在函式定義中從左向右寫入的變數名就叫做形式引數,簡稱 形參

下圖中的a 和 b 就是形參

實參:在函式呼叫階段從左往右依次寫入的變數值就叫實際引數,簡稱 實參

下圖中的 1 和 2 就是實參

形參和實參相當於  變數名 和 變數值。

變數名 與 變數值 在函式呼叫階段 臨時呼叫,函式執行結束之後,則斷開立馬斷開連線

## 注意點:

# 形參的表現形式就一種

# 實參的表現形式有多種

位置引數 和 關鍵字引數

位置引數:

# 從左往右依次寫入的資料就是位置引數

位置形參

# 在定義函式的時候,從左往右依次寫入的變數名就是位置形參(如下圖中的 a b)

位置實參

# 在函式呼叫階段,從左往右依次寫入的變數值就是位置實參(呼叫函式func()時,輸入的1,2)

關鍵字引數:

下午中的a , b 就是關鍵字

'''位置形參和位置實參的關係:

位置實參從左往右依次傳遞給位置實參(一一對應)

'''預設引數

在定義函式階段,分兩種情況:

1.如果沒有給形參傳遞值,那就使用預設的

2.如果給形參傳遞了值,那就用傳遞的值

3.預設引數只要不放在  **kwargs  後面都可以

下圖中 a 和 b 傳了 實參 1 和 2 ,c沒有傳值,那就是預設9,如果傳了值,那就用上傳的值

可變長引數

1 無論在函式呼叫階段,傳多少個引數都可以, *args(*號後面可以為任意,args是python中約定促成的規定)輸出的結果是元祖,如下圖

2 無論我在函式呼叫階段傳遞多少個 關鍵字實參 都可以。函式中以**kwargs(同樣只是約定俗成)

**kwargs 輸出的結果 是 字典(把多餘的關鍵字引數賦給了**號後面的變數名)

3 無論我在函式呼叫階段傳遞多少個位置引數和關鍵字引數都可以,如下圖

組合使用

綜上所述所有引數可任意組合使用,但定義順序必須是:位置引數、預設引數、*args、命名關鍵字引數、**kwargs      

位置實參1被*接收,以元組的形式儲存下來,賦值給args,即args=(1,),關鍵字實參z=3,y=2被**接收,以字典的形式儲存下來,賦值給kwargs,即kwargs=

然後再啟用func(),得到結果1,2,3

命名空間的概念

1. 什麼是命名空間?

就是繫結變數名和變數值的地方

2. 命名空間的分類:

-1 內建命名空間

在python直譯器中

len()

print()

open()

-2 全域性空間名稱

靠邊定格寫的名稱,是全域性空間名稱

-3 區域性命名空間

# 在函式體中存在的都是區域性的

名字的查詢順序

1. 看自己位置在**:

如果在區域性:區域性    >>>    全域性    >>>  內建

如果在全域性: 全域性   >>>  內建

#

區域性命名空間的巢狀:

deff1():

#x = 222

deff2():

#x = 333

deff3():

#x = 444

deff4():

#x = 555

deff5():

#x = 666

print

(x) f5()

f4()

f3()

f2()

f1()

拓展面試題

下圖中輸出的結果,是什麼,原理又是什麼

輸出結果中,其中 z 值 是之前的100

通過z 重新賦值之後,z同樣指向100的記憶體位址,即z = 100(這裡相當於成了預設引數)  和 a = 100

函式func內部,對 a 重新賦值之後,a 指向乙個新的記憶體位址200

所以,輸出的結果,是 1,2,100和 200

Python 函式以及引數傳遞

函式簡介 function 函式也是乙個物件 物件是記憶體中專門用來儲存資料的一塊區域 函式可以用來儲存一些可執行的 並且可以在需要時,對這些語句進行多次的呼叫 建立函式 def 函式名 形參1,形參2,形參n 塊 函式名必須要符號識別符號的規範 可以包含字母 數字 下劃線 但是不能以數字開頭 函式...

python中lambda函式以及map函式複習

斷更很久了今天來複習下python中lambda函式的使用 def test x return x x 這裡我們用lambda定義乙個匿名的內聯函式。請注意,該函式沒有名稱。test 是儲存建立的lambda函式的變數的名稱 上面的函式和下面的lambda函式是一樣的 test f lambda x...

(14)shell 函式以及函式引數

函式可以讓我們將乙個複雜功能劃分成若干模組,讓程式結構更加清晰,重複利用率更高。shell 函式必須先定義後使用。function name 如果你願意,也可以在函式名前加上關鍵字 function function function name 注意 函式返回值,可以顯式增加return語句 如果不...