封裝的具有獨立功能的小模塊,在調(diào)用前定義
定義:
def ? job()
? ? ? pass
? ? ? return
調(diào)用:
? ? ?? job()
參數(shù):
? ? ? 形參:定義函數(shù)時使用的參數(shù),用來接收傳遞過來的參數(shù),可以給形參一個默認值
? ? ? 實參:用來傳遞參數(shù)
? ? ? 例子:def study(work="hard") #給定默認參數(shù)hard
類型標注:
? ? ? def study(work:str) ??
? ? ? def study(work) ->代表 return 類型
? ? ? 函數(shù)的嵌套使用
函數(shù)的嵌套調(diào)用:
? ? ?? 在一個函數(shù)中調(diào)用另一個函數(shù)
? ? ? 函數(shù)的遞歸調(diào)用:
? ? ? 自己調(diào)用自己 例如階乘
模塊函數(shù):
模塊就是工具包,模塊具有不同的功能,根據(jù)需求調(diào)用
模塊的調(diào)用方式:
1.import random
2.from random import randint
3.from random import? *
在調(diào)用模塊時,避免被調(diào)用執(zhí)行,在被調(diào)用模塊中調(diào)用前__main__=__name___
注意:import keyword
? ?? print(keyword.kwlist)
打印出關(guān)鍵詞,查看系統(tǒng)變量,防止變量與系統(tǒng)變量重名。
函數(shù)參數(shù)和返回值:
1.無參無返 ,不接收參數(shù)也沒有返回值。只是做界面顯示
2.有參有返,根據(jù)接收的參數(shù),做相應的響應,并顯示處理結(jié)果
3.有參無返,根據(jù)接收的參數(shù),處理不同的數(shù)據(jù)
4.無參有返,例如溫度計
根據(jù)不同的需求
注:使用元組可以返回多個值 ? ? ? a,b=b,a(互換變量)
不可變和可變參數(shù):
傳遞參數(shù)是不可變類型的:函數(shù)內(nèi)部賦值只會影響局部變量的引用,不會影響外部變量
傳遞參數(shù)是可變類型的:函數(shù)內(nèi)部方法修改了數(shù)據(jù),外部內(nèi)容也會改變。例如append、extend 、pop、clear等
缺省參數(shù):
就是默認參數(shù)
def? job(name='bab'):
? ? ? ? ? print(name)
job() ? ? #? 如果不給參數(shù)就用默認的,要修改具有多個變量的某個變量值,最好是將此變量提取出來
例子:def? study(name='xiaoming',study='hard'):
? ? ?? print(name,study)
study(study='easy')
注意:保證帶有默認值的缺省參數(shù)在參數(shù)列表末尾
不定長參數(shù):
def? job(name,*args,**kwargs):
? ? ? print(name,*args,kwargs) ? ? 加*解包,不加*整體。args是參數(shù)的元組,不用缺省參數(shù)傳遞進來的會被放在args作為元組存在,*args是對前面元組的解包。缺省參數(shù)傳遞進來的會被放在kwargs中作為字典存在。
當傳入元組或字典時,使用*解包
def? People(*args,**kwargs):
? ? ? print(name,args,kwargs)?
gl_name=('xiaohong','xiaoming',xiaobai')
gl_xiaohong={"name":xiaohong,"age":45}
People(*gl_name,**gl_xiaohong)? 等價于People('xiaohong','xiaoming',xiaobai',"name":xiaohong,"age":45)?
遞歸函數(shù):
一個函數(shù)內(nèi)部調(diào)用自己,針對不同的參數(shù)處理方法不同。當參數(shù)滿足一個條件時,不再執(zhí)行,否則會陷入死循環(huán)。
君子協(xié)議:
base64加密庫
import base64
data ='2580'
print(base64.b64encode(data.encode()).decode()) ? ? #加密
print(base64.b64decode('MjU4MA==').decode()) ? ? ?? #解密
哈希算法:
hash加密庫
import hashlib
枚舉函數(shù):enumerate
for i,j in enumerate([1,2,3,4,5,6]):
? ? ? ? print(i,j)
枚舉帶索引號的列表元素