函式引數和命名空間

2022-09-10 09:57:15 字數 2222 閱讀 3810

在函式的定義階段括號內填寫的引數,簡稱「形參」。

形參只有一種表現形式就是變數名。

def func(a, b):  #

a和b就是函式func的形參

pass

在函式的呼叫階段括號內傳入的引數,簡稱實參。

實參有多種表現形式,值、變數名、返回值等,但核心就是資料值。

func(1,2)  #

資料1和2就是函式func的實參

我們可以將形參看成是變數名,實參看做變數值。兩種在函式呼叫階段繫結,函式執行結束斷開

指按照從左往右的順序依次填入的引數。

指在函式的定義階段按從左到右順序依次填入括號的變數名。

指在函式的呼叫階段安從左到右順序依次填入括號的變數名。

在函式呼叫階段使用形參名=資料值的方式知名道姓的傳值。

func(1,b = 2)  #
1.位置形參與位置實參在函式呼叫階段,按照位置一一對應。

2.位置引數在繫結的時候數量必須一致。

函式在定義階段就可以給形參賦值。

在函式呼叫階段如果不為形參賦值則使用預設的值。

在函式呼叫階段如果為該形參賦值則使用被賦予的值。

需要注意的是,預設形參必須在位置形參之後。

1.『*』號後跟變數名

『*』在形參中的作用是接收多餘的位置引數,並組織成元組的形式賦值給『*』號後的變數名。

可以使函式無論傳入多少位置引數都可以正常執行。

2.『**』後跟變數名

『**』號的作用是接收多餘的關鍵字引數,並組織成字典的形式賦值給『**』號後面的變數名。

3.『*』號和『**』號組合使用

可以使乙個函式無論傳入多少位置引數和關鍵字引數都可以正常執行。

需要注意的是,『*』號後可以跟任何變數名,但python中推薦使用

*args

**kwargs

1.『*』在實參中的使用

『*』號在實參中會將列表、元組內的元素打散成位置引數的形式一一傳值。

2.『**』在實參中的使用

『**』號在實參中會將字典的鍵值對打散成關鍵字引數的形式一一傳值。

用『*』分隔後面的引數必須使用關鍵字引數的形式。

命名空間就是用於存放變數名與變數值繫結關係的地方。

內建命名空間就是python提前給定義好的。

例如:print、len等。

在py檔案中定格編寫的**執行後都會存入全域性命名空間。

另外,像是if、for、while等語句下的變數,雖然不頂格,但也是屬於全域性命名空間。

函式體**執行之後產生的都是區域性命名空間。

隨python直譯器啟動與關閉而建立和銷毀

隨著py檔案的執行和結束而建立和銷毀

隨著函式體**的執行與結束而建立和銷毀

先找區域性,再找全域性,再找內建。

先找全域性,再找內建,不會找區域性。

函式在定義階段名字的查詢順序就已經固定了。

特例:當x的賦值在print之後的時候會報錯,因為他在區域性找到了但還沒有定義。

函式的引數和命名空間

1 函式無論傳入多少位置引數都可以正常執行 2 函式無論傳入多少關鍵字引數都可以正常執行 def qwer x,y,a print x,y,b qwer qwer a 1,b 2,c 3,d 4 qwer x 1,y 2 1 2 3 定義乙個函式無論傳入多少個位置引數和關鍵字都可以正常執行 def ...

C 預設引數和命名空間

今天再介紹一下c 的一些特點,今天要介紹的是c 的預設引數和命名空間兩個特點,首先介紹一下什麼是預設 sheng 引數,所謂預設引數,顧名思義,就是在宣告函式的某個引數的時候為之指定乙個預設值,在呼叫該函式的時候如果採用該預設值,你就無須指定該引數。預設引數使用主要規則 呼叫時你只能從最後乙個引數開...

命名空間和函式原型

今天學了c primer plus上的第二章,主要講了c 的一些基本概念和操作。由於之前學過其他語言,看起來相對輕鬆。其中收穫最大是關於 命名空間 和 函式原型 的內容 一 命名空間 命名空間支援是c 的乙個特性。以std為例 std 是個命名空間識別符號,c 標準庫中的函式或者物件都是在命名空間s...