函數基礎
1.什么是函數
函數就是對實習某一特定功能的代碼的封裝
2.函數的分類
系統(tǒng)函數:系統(tǒng)自己定義的函數(不需要程序去實現(xiàn))
自定義函數:需要自己編碼的函數
3.聲明函數
1)語法
def 函數名(參數列表):
函數體
2)說明
def - 聲明函數的關鍵字
函數名 - 是標識符编矾,不能是關鍵字
PEP8命名規(guī)范(所有字母小寫擅耽,多個單詞用下劃線隔開)错英;
見名只義,根據名字大概能直到函數的功能
() - 固定寫法
參數列表 - 這兒的參數又叫形參号醉,以’變量名1,變量名2夫否,···‘的形式出現(xiàn)
形參可以沒有挥萌,也可以有多個
將函數外面的數據傳遞到函數里面
函數體 - 實現(xiàn)函數功能的一條或者多條語句
3)初學者聲明函數的過程
a.確定函數功能
b.根據功能確定函數名
c.確定形參:看實現(xiàn)函數的功能需不需要從函數外面?zhèn)鲾祿枰獢祿蛯粋€參數
d.實現(xiàn)的函數的功能
e.確定返回值
!!!!注意:聲明函數的時候不會執(zhí)行函數體亡问!調用函數的時候才會執(zhí)行函數體
4.函數的調用
調用函數就是使用函數
1)語法
函數名(實參列表)
2)說明
函數名 - 已經聲明過的函數的函數名
() - 固定寫法
實參列表 - 實參是給形參賦值的官紫;實參是具體的值,比如:數據州藕,已經賦值過的變量束世,運算表達式(不能是賦值語句)···
3)調用過程
第一步:回到函數聲明的位置
第二步:傳參;用實參給形參賦值
第三步:執(zhí)行函數體
第四步:執(zhí)行完函數體床玻,回到函數調用的位置
練習1:求三個數的最大值
練習2:寫一個函數判斷一個字符串中有中文字符
練習3:寫一個函數實現(xiàn)將一個數據插入到列表的最前面
def num_max(num1, num2, num3):
if num1 > num2 and num1 > num3:
print(num1)
elif num2 > num1 and num2 > num3:
print(num2)
else:
print(num3)
num_max(1, 3, 67)
def chinese_in_string(string):
for character in string:
if '\u4e00' <= character <= '\u9fa5':
print('is')
break
else:
print('no')
chinese_in_string('abase我wre')
def insert_front(list1, item):
list1.insert(0, item)
nums = [12, 45]
insert_front(nums, 234)
print(nums)
函數的參數
1.位置參數和關鍵字參數(實參)
1)位置參數:調用函數的時候毁涉,讓實參和形參的位置一一對應
2)關鍵字參數:調用函數的時候,以‘形參=實參’的形式傳參锈死;位置可以亂
注意:1.不管使用哪種方式傳參贫堰,要保證每個參數都有值**
2.如果既有位置參數和關鍵字參數穆壕,位置參數一定要放在關鍵字參數的前面**
2.參數默認值(形參)
聲明函數的時候可以給參數設置默認值,以‘形參=值’的方式來設置
設置了默認值的參數在調用函數的時候可以不用傳參
如果有的參數有默認值其屏,有的參數沒有默認值喇勋,有默認值的參數必須放置沒有默認值參數的后面
def func2(x=10, y=49, z=10):
print('x:%s y:%s z:%s' % (x, y, z))
func2(23, 45, 100)
func2(z=399)
3.參數類型說明
1)賦默認值
2)以‘形參:類型名’的方式說明類型
對參數類型進行說明可以引導函數調用正確的傳參,也可以讓實現(xiàn)函數體的時候有代碼提示
def func4(x: list, y: str, z=0):
print(x, y, z)
4.不定長參數
1)
聲明函數的時候在參數前加偎行,那么這個參數就變成不定長參數川背,可以同時接收多個實參
(不定長參數的實質就是一個元組,接收到的實參就是元組中的元素)
帶一個的不定長參數蛤袒,調用的時候需要使用位置參數
2)
聲明函數的時候熄云,在參數前面加**,那么這個參數就會變成不定長參數妙真,就可以同時接收多個參數
(這個不定長參數的實質是一個字典皱碘,調用的時候就必須使用關鍵字參數)
注意:參數中帶的參數需要放在不帶的 參數的后面**
帶一個的需要放在帶兩個的前面**
def func11(**x):
print(x)
func11(a=1, b=2, c=5)
def func(*arg, **kwrgs):
print(arg, kwrgs)
func(2, b=5, c=0)