6.1 函數(shù)的定義
函數(shù)是實(shí)現(xiàn)具有特定功能的代碼
函數(shù)的特點(diǎn):
?隱藏實(shí)現(xiàn)功能的細(xì)節(jié)
?重用代碼
?提高可讀性啡莉,便于調(diào)試
函數(shù)的定義:
def 函數(shù)名(形式參數(shù)(形參)1,形式參數(shù)2,......形式參數(shù)n):
?要運(yùn)行的代碼(函數(shù)體)
?return 輸出的數(shù)據(jù)(返回值)
6.2 函數(shù)的形參和實(shí)參
參數(shù)就是函數(shù)的輸入數(shù)據(jù)港准,在程序運(yùn)行時(shí)根據(jù)參數(shù)不同,執(zhí)行不同代碼咧欣。
形參:是定義函數(shù)時(shí)括號(hào)內(nèi)的內(nèi)容浅缸,是格式上的約定,沒(méi)有實(shí)際數(shù)據(jù)實(shí)參魄咕,形參用于約束
實(shí)參:是使用函數(shù)時(shí)括號(hào)內(nèi)的內(nèi)容衩椒,是根據(jù)約定,傳入實(shí)際的數(shù)據(jù)哮兰,實(shí)參用于傳值
def oper(num, num1, num2):
# num, num1, num2是函數(shù)oper的形參
if num < 100:
print(num1 * num2)
else:
print(num1 + num2)
# 1314, 52, 0是實(shí)參
oper(1314, 52, 0)
# 5,2,0是實(shí)參
oper(5, 2, 0)
6.3 函數(shù)的返回值
參數(shù)是函數(shù)的輸入數(shù)據(jù)毛萌,而返回值則是函數(shù)的輸出結(jié)果。
return 不是必須的喝滞,但是return語(yǔ)句執(zhí)行后阁将,return 后面的語(yǔ)句將不會(huì)被執(zhí)行,函數(shù)將中斷執(zhí)行右遭。
若傳入的實(shí)參在函數(shù)體中沒(méi)有對(duì)應(yīng)的執(zhí)行語(yǔ)句時(shí)做盅,即 return 返回值為空,最終返回:None
6.4 函數(shù)的使用技巧
(1)設(shè)置參數(shù)默認(rèn)值
為參數(shù)設(shè)置默認(rèn)值窘哈,只需要在形參后面增加 "=具體值"即可吹榴,如果不傳入實(shí)參就用默認(rèn)的具體值,否則用傳入的具體值
(2)關(guān)鍵字傳參
函數(shù)名(形參1 = "具體值1",形參2 = "具體值2",形參3 = "具體值3",...)滚婉;調(diào)用函數(shù)時(shí)图筹,以形參 = "具體值"的方式賦值
(3)混合形式傳參(既可以包含按位置傳參,又可以強(qiáng)制指定按關(guān)鍵字傳參)
在定義函數(shù)時(shí)满哪,設(shè)置""之后必須用關(guān)鍵字傳參婿斥,""之前只傳入對(duì)應(yīng)參數(shù)的具體值即可。
# desc為位置傳參哨鸭,birth必須是關(guān)鍵字傳參民宿,name是默認(rèn)傳參
def info(desc, *, birth, name='imooc'):
print('{n}-dbfz3vv出生于'.format(n=name, d=desc, b=birth))
# birth必須是關(guān)鍵字傳參像鸡,否則報(bào)錯(cuò)
info('程序員的夢(mèng)工廠', birth='2013年8月')
(4)序列傳參
利用序列為參數(shù)進(jìn)行賦值
def oper(num, num1, num2):
if num < 100:
return num1 * num2
else:
return num1 + num2
# 列表傳參
list1 = [1314, 52, 0]
print(oper(*list1))
# 元組傳參
tuple1= (5, 2, 0)
print(oper(*tuple1))
(5)字典傳參
利用字典為參數(shù)進(jìn)行賦值活鹰,使用字典傳參時(shí),字典的key必須為字符串類型
def fun_dict(name, hiredate, tel, dept):
print('{n}隸屬于{h}只估,電話:{t}, 入職日期:hplxl3j'.format(n=name, h=hiredate, t=tel, d=dept))
dict1 = {'name': '小葫蘆', 'hiredate': '2017-9-23', 'tel': 18795642135, 'dept': '技術(shù)部'}
# 使用**dict1可實(shí)現(xiàn)對(duì)字典dict1的解包
fun_dict(**dict1)
(6) 返回值包含多個(gè)數(shù)據(jù)
返回包含多個(gè)數(shù)據(jù),字典通過(guò)key包含不同類型的數(shù)據(jù)志群,如果每個(gè)key又包含多個(gè)子數(shù)據(jù),就用列表進(jìn)行囊括蛔钙,再用字典表示子數(shù)據(jù)
def get_detail_info():
dict1 = {
"employee": [
{"name": "張三", "salary": 1800},
{"name": "李四", "salary": 2000}
],
"device": [
{"id": "8881292", "title": "xx筆記本"},
{"id": "8881234", "title": "xx臺(tái)式機(jī)"}
]
}
return dict1
print(get_detail_info())
# 調(diào)用函數(shù)
d = get_detail_info()
# 取值
name = d.get("employee")[0].get("name")
print(name)