函式下
引數
以下是呼叫函式時可使用的正式引數型別:
必需引數
關鍵字引數
預設引數
不定長引數
必需引數
必需引數須以正確的順序傳入函式。呼叫時的數量必須和宣告時的一樣。
呼叫 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( str = “菜鳥教程”)
以上例項輸出結果:
菜鳥教程
以下例題演示了函式引數的使用不需要使用指定順序:
例題二:
def printinfo( name, age ):
print ("名字: ", name)
print ("年齡: ", age)
return
printinfo( age=50, name=“runoob” )
以上例項輸出結果:
名字: runoob
年齡: 50
預設引數
呼叫函式時,如果沒有傳遞引數,則會使用預設引數。以下例項中如果沒有傳入 age 引數,則使用預設值:
例題一:
def printinfo( name, age = 35 ):
print ("名字: ", name)
print ("年齡: ", age)
return
printinfo( age=50, name=“runoob” )
print ("------------------------")
printinfo( name=“runoob” )
以上例項輸出結果:
名字: runoob
年齡: 50
名字: runoob
年齡: 35
不定長引數
你可能需要一個函式能處理比當初宣告時更多的引數。這些引數叫做不定長引數,和上述 2 種引數不同,宣告時不會命名。基本語法如下:
def functionname([formal_args,] *var_args_tuple ):
“函式_文件字串”
function_suite
return [expression]
加了星號 * 的引數會以元組(tuple)的形式匯入,存放所有未命名的變數引數。
例題一:
def printinfo( arg1, *vartuple ):
print ("輸出: ")
print (arg1)
print (vartuple)
printinfo( 70, 60, 50 )
輸出結果:
輸出:
70
(60, 50)
如果在函式呼叫時沒有指定引數,它就是一個空元組。我們也可以不向函式傳遞未命名的變數。
例題二:
def printinfo( arg1, *vartuple ):
print ("輸出: ")
print (arg1)
for var in vartuple:
print (var)
return
printinfo( 10 )
printinfo( 70, 60, 50 )
輸出結果:
輸出:
10
輸出:
70
60
50
還有一種就是引數帶兩個星號 **基本語法如下:
def functionname([formal_args,] **var_args_dict ):
“函式_文件字串”
function_suite
return [expression]
加了兩個星號 ** 的引數會以字典的形式匯入。
例題三:
def printinfo( arg1, **vardict ):
print ("輸出: ")
print (arg1)
print (vardict)
printinfo(1, a=2,b=3)
以上例項輸出結果:
輸出:
1
{‘a’: 2, ‘b’: 3}
宣告函式時,引數中星號 * 可以單獨出現,例如:
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
例題:
sum = lambda arg1, arg2: arg1 + arg2
print ("相加後的值為 : ", sum( 10, 20 ))
print ("相加後的值為 : ", sum( 20, 20 ))
輸出結果:
相加後的值為 : 30
相加後的值為 : 40
return語句
return [表示式] 語句用於退出函式,選擇性地向呼叫方返回一個表示式。不帶引數值的return語句返回None。之前的例子都沒有示範如何返回數值。
例題:
def sum( arg1, arg2 ):
total = arg1 + arg2
print ("函式內 : ", total)
return total
total = sum( 10, 20 )
print ("函式外 : ", total)
以上例項輸出結果:
函式內 : 30
函式外 : 30
強制位置引數
Python3.8 新增了一個函式形參語法 / 用來指明函式形參必須使用指定位置引數,不能使用關鍵字引數的形式。
在以下的例子中,形參 a 和 b 必須使用指定位置引數,c 或 d 可以是位置形參或關鍵字形參,而 e 或 f 要求為關鍵字形參:
def f(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)
以下使用方法是正確的:
f(10, 20, 30, d=40, e=50, f=60)
以下使用方法會發生錯誤:
f(10, b=20, c=30, d=40, e=50, f=60) # b 不能使用關鍵字引數的形式
f(10, 20, 30, 40, 50, f=60) # e 必須使用關鍵字引數的形式
相關文章
- Linux下getopt函式的使用Linux函式
- async函式,瞭解一下函式
- 第八章 函式(下)函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- 使用 cURL 函式下載B站字幕函式
- python檢視模組下的函式Python函式
- ajax 下載Excel 新增回撥函式Excel函式
- js基礎函式(下)(小白自用5)JS函式
- 第7章 IF函式 COUNTIF函式 SUMIF函式函式
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- (譯) 函式式 JS #2: 函式!函式JS
- 核函式 多項式核函式 高斯核函式(常用)函式
- 第 8 節:函式-匿名函式、遞迴函式函式遞迴
- lambda匿名函式sorted排序函式filter過濾函式map對映函式函式排序Filter
- main函式的入口函式AI函式
- SQL-函式 - 聚合函式SQL函式
- 【每日函式】每日函式(2021.08.16)函式
- 【每日函式】每日函式(2021.08.10)函式
- 【每日函式】每日函式(2021.08.05)函式
- 【每日函式】每日函式(2021.08.06)函式
- 【每日函式】每日函式(2021.08.14)函式
- 【每日函式】每日函式(2021.08.08)函式
- 【每日函式】每日函式(2021.08.09)函式
- ES6 箭頭函式下的this指向函式
- 重新學習一下陣列函式陣列函式
- algorithm標頭檔案下的常用函式Go函式
- useCookie函式:管理SSR環境下的CookieCookie函式
- 一類初等函式下取點問題函式
- 關於linux下system()函式的總結Linux函式
- 【知識點】inline函式、回撥函式、普通函式inline函式
- Python函式與lambda 表示式(匿名函式)Python函式
- webgl內建函式--幾何函式與矩陣函式Web函式矩陣
- webgl內建函式--向量函式與紋理查詢函式Web函式
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- 深入理解 函式、匿名函式、自執行匿名函式函式
- 箭頭函式、簡寫函式、普通函式的區別函式