函數的傳參
參數划分
- 形參
- 寫在函數聲明的位置的變量叫形參,形式上的一個完整,表示這個函數需要xxx
- 實參
- 在函數調用的時候給參數傳遞的值叫實參
def meet(sex): #sex:形參
print("性別:%s"%(sex))
meet("男") #"男":實參
def func(a:int,b:str) #形參跟的數據類型只是個提示,沒有約束性
pass
func(1,2)
實參
- 位置參數
def meet(sex,old,happy):
print("性別:%s,年齡:%s,愛好:%s"%(sex,old,happy))
meet("男",10,"籃球")
#根據參數位置,從左到右,一一對應
- 關鍵字參數
def meet(sex,old,happy):
print("性別:%s,年齡:%s,愛好:%s"%(sex,old,happy))
meet(sex="男",old=10,happy="籃球")
#一一對應,可以打亂順序
- 混合傳參
def meet(sex,old,happy):
print("性別:%s,年齡:%s,愛好:%s"%(sex,old,happy))
meet("男",10,happy="籃球")
#既有位置參數又有關鍵字參數
#位置參數要在關鍵字參數之前,否則會報錯
形參
- 位置參數 與實參角度的位置參數是一種
- 優先級:位置>默認值
- 默認值參數:形參是默認參數時,實參可以不必傳遞
三元運算符
只針對if 。。。else。。。
#格式:條件成立的結果 if 條件判斷 else 條件不成立的結果
a = 1000
b = 2000
c = a if a > b else b
print(c)
def complie(a,b):
return a if a > b else b
print(complie(10,20))
枚舉
- 描述
- enumerate()函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標
- 語法
- enumerate(sequence,[strart=0])
- 參數
- sequence:一個序列、迭代器或其他支持迭代對象
- start:下標起始位置
- 返回值
- 返回enumerate(枚舉)對象
lst = [1,2,3,4,5]
dic = {}
for k,v in enumerate(lst,10):
dic[k] = v
print(dic)
函數的動態參數
形參的第三種參數:動態參數
- 動態接收位置參數:*args
- * 在函數定義的時候叫聚合
- args 可以更改,最好保持不變
- 位置參數>動態位置參數
def func(a,b,*args):
print(a,b,args)
func(1,2,3,4,5,6,7)
def func(a,b,*args): #*args:聚合
print(a,b,*args) #*args:打散--原數據類型
func(1,2,3,4,5,6,7)
def func(*args,a=1,b=2):
print(a,b,*args)
func(1,2,3,4,5,6,7)
#上面這種情況關鍵字參數要放在動態參數后面
lst = [1,2,3,4,5,6]
def func(*args):
print(*args)
func(*lst)
#傳參數的時候先打散,不做為一體傳入,在函數里再用打散可以獲取單個元素
- 動態接收關鍵字參數:**kwargs
def func(a,b,**kwargs):
print(a,b,kwargs) #打印出字典,加一個*取出的是鍵,不能打散
func(1,2,c=5,d=7)
#運行結果
1 2 {'c': 5, 'd': 7}
def func(a,b,*args,c=1,d=2,**kwargs):
print(a,b,args,c,d,kwargs)
func(1,2,3,4,5,6,7,8,e=0,f=5)
dic = {"1":2,"4":"a","3":4}
def func(**kwargs):
print(kwargs)
func(**dic) #先打散在傳入
- 萬能傳參(常用)
def func(*args,**kwargs):
print(args,kwargs)
func(1,2,3,4,5,6,a=8,b=9)
-
形參順序
位置參數 、*args 、默認參數 、**kwargs
函數的注釋
def func(a,b):
"""
函數作用
:param a: 參數說明
:param b: 參數說明
:return: 返回值說明
"""
pass
print(func.__doc__) #打印函數的注釋信息