在定義函式階段定義的引數稱之為形參,相當於變數名
位置形參:在函式定義階段,按照從左到右的順序定義
特點:必須被傳值,且實參與形參按照順序一一對應,多乙個少乙個都不行!
def func():
pass
預設形參:在函式定義階段,就已經被賦值的引數
def func(x, y=1):
pass
普通收集形參:用於接收多出部分的位置實參,溢位的部分會被儲存成元組型別,然後賦值給後面的形參接收
def func(x, y, *args):
print(x, y)
print(args)
func(1, 2, 3, 4, 5, 6, 7, 78, 8, 89)
*後的形參名一般定義為args
,為約定俗成
關鍵字收集形參:用於接收多出部分的關鍵字實參,溢位的部分會被**儲存成字典型別,然後賦值給**後面的形參接收
def func(x, y, **kwargs):
print(x, y)
print(kwargs)
func(a=1, b=2, c=3, x=4, y=5, z=6)
**後的形參名一般定義為kwargs
,為約定俗成
命名關鍵字形參:在函式定義時,*後定義的引數,就是命名關鍵字引數
特點:命名關鍵字實參必須按照key=value
的形式為其傳參
# y=2是帶有預設值的命名關鍵字形參,並非是預設形參,所以可以放置在z的前面
def func(x, *, y=2, z):
print(x)
# 其中y和z就是命名關鍵字形參
print(y, z)
func(1, z=3)
在呼叫函式階段定義的引數稱之為實參,相當於變數值
位置實參:在函式呼叫階段,按照從左到右的順序依次傳入的值
特點:實參與形參按照順序一一對應
def func(x, y):
print(x + y)
func(1, 2)
關鍵字實參:在函式呼叫階段,按照key=value
的形式傳入的值
特點:指定給具體的某個形參傳值,可以不按照順序傳值
def func(x, y):
print(x + y)
func(y=1, x=2)
func(x=2, y=1)
*和**在函式定義處使用
*:把多餘的普通實參打包成元組
**:把多餘的關鍵字實參打包成字典
*和**在函式呼叫處使用
*:對元組或列表進行解包
**:對字典進行解包
*和**同時在函式定義處和呼叫處使用
先解包變成位置形參
再將多餘的位置形參打包
# 示例一
def func(x, y, z):
print(x, y, z)
func(*[1, 2, 3])
func(*(1, 2, 3))
func(**)
# 例項二
def func(x, y, z, *args):
print(x, y, z)
print(args)
func(5, 6, 7, *[1, 2, 3])
在呼叫階段,實參會繫結給形參
這種繫結關係只能在函式體內使用
實參與形參的繫結關係只在函式呼叫時生效,函式呼叫結束後解除繫結關係
位置實參與關鍵字實參混合使用時,位置實參必須放在關鍵字實參前面(語法規定)
位置形參與預設形參混合使用時,位置形參必須在預設形參的左邊
不能為同一形參重複傳值
預設形參對應的實參可傳可不傳
*args
與**kwargs
混合使用時,*args
必須寫在**kwargs
的前面,否則會報語法錯誤
Python函式的主要引數型別
形式引數 形參 在定義函式階段定義的引數稱之為形參,相當於變數名 位置形參 普通形參 位置形參 在函式定義階段,按照從左到右的順序定義 特點 必須被傳值,且實參與形參按照順序一一對應,多乙個少乙個都不行 def func pass 預設形參 預設形參 在函式定義階段,就已經被賦值的引數 def fu...
Jmail主要引數
下面是乙個忘記密碼時的程式 前一段時間有發過乙個簡單的jmail郵件發郵件的 今天就把這個 做乙個具體的註解,並增加了另外兩個格式的 並舉幾個簡單的例子 首先是jmail.tpmail的核心 set jmail server.createobject jmail.tpmail 建立乙個jmail物件...
tar主要引數
主選項 一條命令以下5個引數只能有乙個 c create 新建乙個壓縮文件,即打包 x extract,get解壓檔案 t list,檢視壓縮文件裡的所有內容 u update 更新原壓縮包中的檔案 輔助選項 z 是否同時具有gzip的屬性?即是否需要用gzip壓縮或解壓?一般格式為 tar.gz或...