Python函式引數型別

2021-07-25 21:23:41 字數 2867 閱讀 6220

函式的引數

定義函式(引數):

普通引數,預設引數,可變引數(可變位置引數,可變關鍵字引數),keyword-only 引數

呼叫函式(傳參):

位置引數,關鍵字引數,引數結構(位置引數解構,關鍵字引數解構)

普通引數 x,y:

def add(x,y)

return x + y

預設引數  x=1:

def inc(base,x =1):

return base +x

inc(3) 4

inc(3,2) 5

引數可以有預設值, 但當乙個引數有預設值時,呼叫時如果不傳遞此引數,會使用預設值

帶預設值引數必須在不帶預設值引數之後,否則會報錯syntaxerror

def  inc(x=0,y):

return x+y

file "", line 1

def inc(x= 0,y):

^syntaxerror

: non-default argument follows default argument

可變位置引數:定義引數時前面加乙個*,表示這個引數是可變的,可以接受任意多個引數,這些引數構成乙個元組,只能通過位置引數傳遞

可變關鍵字引數:
定義引數時,在前面加**,表示這個引數可變,可以接受任意多個引數,這些引數構成乙個字典,只能通過關鍵字引數傳遞

引數的混合使用:

#位置引數可以和關鍵字引數一起使用

#當位置可變引數和關鍵字可變引數一起使用時候,可變位置引數必須在前

def

fn(*

args,**

kwargs):

print(args)
print(kwargs)

fn(1,2,3,x=4,y=5)
(1,2,3)

(1, 2, 3)

#普通引數可以和可變引數一起使用,但是傳參的時候必須匹配

def

fn(x,y,*

args,**

kwargs):

print(x)
print(y)
print(args)
print(kwargs)

fn(1,2,3,4,5,a=6,b=7)
1

1

2(3, 4, 5)

#關鍵字可變引數不允許在普通引數之前

def  fn(**kwargs,x):

print(x)

#上面的方式定義會出錯

#預設引數可以在可變位置引數之前

def fn(x=5,*args):

print(x)

pprint(args)

#位置可變引數可以在普通引數之前,但是在位置可變引數之後的普通引數變成可keyword-only 引數

keyword-only引數:

python3特性

#在*號之後的引數只能通過關鍵字引數傳遞的叫keyword-only引數

可變位置引數之後的引數也是keyword-only引數

def  fn(*,x):

print(x)

fn(1,x=3)                   #此時x 只能通過關鍵字引數傳遞,如果安裝普通引數傳遞,會被*和可變位置引數吃掉

fn(x=3)

def fn(*args,x):

print(args)

print(x)

#keyword-only 引數可以有預設值

keyword-only 引數可以和預設引數一起出現,不管它有沒有預設值,不管預設引數是不是keyword-only

引數解構:

可以把乙個可迭代物件解構成位置引數

引數解構發生在函式呼叫用,可變引數發生在函式定義的時候

解構的兩種形式:

乙個星號*,解構的物件:可迭代物件,解構後的結果,位置引數

兩個星號**,解構的物件:字典,解構的結果,關鍵字引數

關鍵字引數解構,key必須是str型別

def add(a,b):

return a+b

data = [4,3]

print(add(*data))            #位置引數解構

data1 =

print(add(**data1))          #關鍵字引數解構

python 函式引數型別檢查

python在3.5後引入了引數型別註解,例 def add x int,y int int 對x,y和返回值都進行注釋,為int型別 return x y注 註解是對函式引數和返回值的 注釋 沒有強制定義的作用 因為python是動態語言啊 那麼既然註解不能強制定義型別,在函式呼叫中怎麼判斷傳入的...

python 函式引數型別檢查

在python中,不知道函式引數型別是乙個很正常的事情,特別是在乙個大專案裡。我見過有些專案裡,每乙個函式體的前十幾行都在檢查引數型別,這實在是太麻煩了。而且一旦引數有改動,這部分也需要改動。下面我們用裝飾器來實現,函式引數的強制型別檢查。首先,這個裝飾器,要接受型別引數,和指定函式引數的型別引數。...

Python函式的引數型別

1 位置引數 引數的位置 順序 很重要,形參和實參個數要匹配 2 關鍵字引數 對引數的位置要求不是很嚴格 3 預設值引數 1 如果形參中制定了預設值,在實參中可以不傳遞形參對應的實參 2 如果形參中指定了預設值,在實參彙總傳遞該引數後,最終引數以傳遞的實參為準 4 不定長引數 1 a 接受傳遞單個值...