python 函式引數

2021-09-10 19:43:32 字數 4016 閱讀 4651

引數,也叫參變數,是乙個變數。

簡單來說,引數就是你呼叫函式時,根據需要傳入的變數。比如說,某個函式的作用是計算長方形的面積,那當你呼叫此函式時就要傳入長方形的長和寬這兩個變數,才能計算出你想要的結果。

python 中的引數分為以下四種型別:

必需引數須以正確的順序傳入函式。呼叫時的數量必須和宣告時的一樣。

例如,下面呼叫printme()函式,你必須傳入乙個引數,不然會出現語法錯誤:

#可寫函式說明

def printme( str ):

"列印任何傳入的字串"

print (str)

return

#呼叫printme函式

printme()

如果你不傳參,呼叫以上**輸出的結果會報錯:

traceback (most recent call last):

file "test.py", line 10, in printme()

typeerror: printme() missing 1 required positional argument: 'str'

關鍵字引數和函式呼叫關係緊密,函式呼叫使用關鍵字引數來確定傳入的引數值。

使用關鍵字引數允許函式呼叫時引數的順序與宣告時不一致,因為 python 直譯器能夠用引數名匹配引數值。

以下例項在函式 printme() 呼叫時使用引數名:

#可寫函式說明

def printme( str ):

"列印任何傳入的字串"

print (str)

return

#呼叫printme函式

printme( str = "自學 python")

以上**將根據引數名 str 傳入引數值 「自學 python」 輸出結果:

自學 python

另外,在傳入關鍵字引數時,還不需要使用指定順序:

#可寫函式說明

def printinfo( name, age ):

"列印任何傳入的字串"

print ("名字: ", name)

print ("年齡: ", age)

return

#呼叫printinfo函式

printinfo( age=666, name="python" )

python 允許以上例項在呼叫函式時打亂引數順序,輸出結果:

名字:  python

年齡:  66612

呼叫函式時,如果沒有傳遞引數,則會使用預設引數。以下例項中如果沒有傳入 age 引數,則使用預設值:

#可寫函式說明

def printinfo( name, age = 666 ):

"列印任何傳入的字串"

print ("名字: ", name)

print ("年齡: ", age)

return

#呼叫printinfo函式

printinfo( age=24, name="python" )

print ("------------------------")

printinfo( name="python" )

輸出結果:

名字:  python

年齡:  24

------------------------

名字:  python

年齡:  666

def functionname([formal_args,] *var_args_tuple ):

"函式_文件字串"

function_suite

return [expression]

加了星號 * 的引數會以元組(tuple)的形式匯入,存放所有未命名的變數引數。

# 可寫函式說明

def printinfo( arg1, *vartuple ):

"列印任何傳入的引數"

print ("輸出: ")

print (arg1)

print (vartuple)

# 呼叫printinfo 函式

printinfo( 70, 60, 50 )

輸出結果:

輸出:70

(60, 50)

如果在函式呼叫時沒有指定引數,它就是乙個空元組。我們也可以不向函式傳遞未命名的變數。如下例項:# 可寫函式說明

def printinfo( arg1, *vartuple ):

"列印任何傳入的引數"

print ("輸出: ")

print (arg1)

for var in vartuple:

print (var)

return

# 呼叫printinfo 函式

printinfo( 10 )

printinfo( 70, 60, 50 )

輸出結果:

輸出:10

輸出:70

6050

不定長引數,還有一種格式就是引數帶兩個星號 **基本語法如下:

def functionname([formal_args,] **var_args_dict ):

"函式_文件字串"

function_suite

return [expression]

加了兩個星號 ** 的引數會以字典的形式匯入。

# 可寫函式說明

def printinfo( arg1, **vardict ):

"列印任何傳入的引數"

print ("輸出: ")

print (arg1)

print (vardict)

# 呼叫printinfo 函式

printinfo(1, a=2,b=3)

輸出結果:

輸出:1

宣告函式時,引數中星號 * 可以單獨出現,例如:

def f(a,b,*,c):

return a+b+c

如果單獨出現星號 * 後的引數必須用關鍵字傳入,否則將報錯。

>>> def f(a,b,*,c):

...     return a+b+c

...>>> f(1,2,3)   # 報錯

traceback (most recent call last):

file "", line 1, in

typeerror: f() takes 2 positional arguments but 3 were given

>>> f(1,2,c=3) # 正常

6>>>

python 使用 lambda 來建立匿名函式。

所謂匿名,意即不再使用 def 語句這樣標準的形式定義乙個函式。

lambda 只是乙個表示式,函式體比 def 簡單很多。

lambda的主體是乙個表示式,而不是乙個**塊。僅僅能在lambda表示式中封裝有限的邏輯進去。

lambda 函式擁有自己的命名空間,且不能訪問自己引數列表之外或全域性命名空間裡的引數。

雖然lambda函式看起來只能寫一行,卻不等同於c或c++的內聯函式,後者的目的是呼叫小函式時不占用棧記憶體從而增加執行效率。

語法格式

lambda 函式的語法只包含乙個語句,如下:

lambda [arg1 [,arg2,.....argn]]:expression

以下**演示了 lambda 表示式的用法:

# 可寫函式說明

sum = lambda arg1, arg2: arg1 + arg2

# 呼叫sum函式

print ("相加後的值為 : ", sum( 10, 20 ))

print ("相加後的值為 : ", sum( 20, 20 ))

輸出結果:

相加後的值為 :  30

相加後的值為 :  40

python引數函式 Python函式引數總結

coding utf 8 整理一下python函式的各種引數型別 位置引數 呼叫函式時,傳入的兩個值按照位置順序依次賦給引數 def power x,n s 1 while n 0 n n 1 s s x return s print power 5,2 預設引數 簡化函式的呼叫 def power...

python 引數 Python函式 引數

python中將函式作為引數,區分將引數直接寫成函式名和函式名 的區別。def fun1 fun print print print fun 執行fun1 fun4 時,fun為函式fun3的返回值x print type fun type fun type fun fun 執行fun1 fun4 ...

函式傳引數 python 函式引數

1.位置引數 最熟悉的一種引數形式,優點 簡單。缺點 傳遞引數不夠靈活 2.預設引數 優點 提高了 的復用性 缺點 容易產生二義性 注意事項 一是必選引數在前,預設引數在後。二是如何設定預設引數。當函式有多個引數時,把變化大的引數放前面,變化小的引數放後面。變化小的引數就可以作為預設引數。def p...