Python 基礎之函數初識與函數參數

一.函數初識

定義:知足某一個方法 知足某一個功能
#(1)功能(包裹一部分代碼 實現某一個功能 達成某一個目的)
#(2)能夠反覆調用,提升代碼的複用性,提升開發效率,便於維護管理
#(3)函數的基本格式:
#定義一個函數
def 函數名():
    code1
    code2函數


#調用函數
函數名()spa

#例子:(最簡單的一個函數)
#函數的定義處code

def func():
    print("我是一個大帥哥")

#函數的調用處
func()

#(4) 函數的命名規則
字母數字下劃線  首字符不能爲數字
嚴格區分大小寫  且不能使用關鍵字
函數命名有意義  且不能使用中文哦orm

這樣方便記憶

#小記:對象

駝峯命名法:
(1)大駝峯命名法 :  myfunc => MyFunc  應用在面向對象程序當中的類名
(2)小駝峯命名法 myfunc => myFunc  用在函數上(不作強制要求)
(3)下劃線命名法 :  myfunc => my_func (推薦)
#函數的定義處 def
def Multiplication_table():
    for i in range(1,10):
        for j in range(1,i+1):
            print("%d*%d=%2d " % (i,j,i*j),end="")
        print()

#函數調用處
Multiplication_table()
for k in range(1,10):
    Multiplication_table()
    k+=1three

 

二.函數的參數

參數: 形參 +  實參
形參: 形式參數 在函數的必定處
實參: 實際參數 在函數的調用處
形參: 普通形參(位置形參),默認形參,普通收集形參,命名關鍵字形參,關鍵字收集形參
實參: 普通實參,關鍵字實參
形參 實參 要一一對應ip

1.帶有參數的函數:普通形參(位置形參)

#:
#函數的定義處 hang lie 叫作普通形參 或者 叫作 位置形參開發

def small_star(hang,lie):
    i = 0
    while i<hang:
        j = 0
        while j<lie:
            print("*",end="")
            j+=1
        print()
        i+=1

#函數的調用處 10,10 叫普通實參
small_star(10,10)
print("===============")
small_star(5,8)
it

2.默認參數

若是不寫任何的實參,那麼使用默認形參的值
若是寫了自定義的實參,那麼使用實際參數
#:
#函數的定義處  hang = 10 lie = 10 默認形參
def small_star(hang=10,lie=10):
    i = 0
    while i<hang:
        j = 0
        while j<lie:
            print("*",end="")
            j+=1
        print()
        i+=1

#函數的調用處 3  4  普通實參
small_star()
small_star(3)
small_star(3,4)
io

3.普通實參 + 默認形參

普通形參 必須 放在默認形參的前面
#:
print('---------------')
def small_star(hang,lie=10):   #就是hang要放在lie=10以前
    i = 0
    while i < hang:
        j = 0
        while j < lie:
            print("*",end="")
            j+=1
        print()
        i+=1

small_star(3,4)

4.關鍵字實參

(1)若是是用來關鍵字實參進行調用,順序隨意
(2)若是定義時是普通形參,但調用時是使用了關鍵字實參調用,
那麼這個參數的後面全部參數都必須使用關鍵字實參
#:
def small_star(hang,a,b,c,lie=10):
    print(hang,a,b,c,lie)
    i = 0
    while i<hang:
        j = 0
        while j<lie:
            print("*",end="")
            j+=1
        print()
        i+=1

#small_star(3,b=5,lie=90,a=4,c=6)
small_star(3,a=4,b=5,c=6,lie=12)

 

#默認形參  關鍵字實參的區別
# 函數的定義處 top middle bottom ..默認形參
def five_class_xiongda_team(top="皇子",middle="狐狸",bottom="寒冰",jungle="瞎子",support="琴女"):
    print("top上單選手:{top}".format(top=top))
    print("middle中單選手:{middle}".format(middle=middle))
    print("bottom下路選手:{bottom}".format(bottom=bottom))
    print("jungle打野選手:{jungle}".format(jungle=jungle))
    print("support輔助選手 最後的但願vip:{support}".format(support=support))

#函數的調用處
# five_class_xiongda_team() top middle bottom ... 關鍵字實參
five_class_xiongda_team(top="奧拉夫",middle="亞索",bottom="德萊文",jungle="蜘蛛")
#在函數的調用處給參數賦值 top = '' middle = '' 等
#關鍵字實參的內容能夠將默認形參進行修改,若是關鍵字實參沒有,那麼函數內的參數就使用默認形參

 

5.收集參數

收集參數:
(1)普通收集參數
(2)關鍵字收集參數
#(1)普通收集參數(可變參數)
語法:
def func(*參數):
    pass
參數前面加一個* 的就是普通收集參數;
普通收集參數專門用於收集多餘的,沒人要的普通實參,造成一個元組
#:
def func(a,b,c,*arg):
    print(a,b,c) #1,2,3
    print(arg) #()
func(1,2,3,4,5,6)

arg => argument 參數
# 計算任意長度的累加和
# 函數的定義處
def mysum(*arg):  #*args接受了三個參數
    total = 0
    print(arg)
    for i in arg:
        total +=i
    print(total)
mysum(1,5,7,1000)
#(2) 關鍵字收集參數
#語法
def func(**參數):
    pass
參數前面加上**的就是關鍵字收集參數
關鍵字收集參數:用於收集多餘的,沒人要的關鍵字實參,造成一個字典
def func(a,b,c,**kwargs):
    pass  
kwargs => keyword 關鍵字 arguments 多個參數
#1:
def func(a,b,c,**kwargs):
    print(a,b,c)
    print(kwargs)

func(1,2,3,f=11,d=13,zz=19)  #將關鍵字實參造成一個字典
"""
輸出結果爲:
1 2 3
{'f': 11, 'd': 13, 'zz': 19}


#2:
#打印任意長度的字符
# 班長:one
# 班花:two
def func(**kwargs):
    dictvar = {"monitor":"班長","class_flower":"班花"}
    strvar1 = ''
    strvar2 = ''
    print(kwargs)  #這個kwargs是一個字典
    for a,b in kwargs.items():
        if a in dictvar:
            strvar1 += dictvar[a] + ":" + b + "\n"
        else:
            strvar2 += "吃瓜羣衆:" + b + "\n"
    print(strvar1)
    print(strvar2)
func(monitor="one",class_flower="two",people1="three",people2="four")

運行後的結果爲:

{'monitor': 'one', 'class_flower': 'two', 'people1': 'three', 'people2': 'four'}

班長:one

班花:two

 

吃瓜羣衆:three

吃瓜羣衆:four

 

 

6.命名關鍵字

#語法:
def func(參數1,參數2,*,參數3,參數4):
    pass
#(1)在函數的定義處,*號後面的參數就是命名關鍵字參數
#(2)在函數的定義處,在普通收集參數和關鍵字收集參數之間的命名關鍵字參數
def func(*args,命名關鍵字參數,**kwargs)
命名關鍵字必須使用關鍵字實參的形式進行調用
#形式1:
def func(a,b,*,c):
    print(a,b,c)
func(1,2,c=4)
結果爲: 1 2 4


#形式2:
若是命名關鍵字指定了默認值,那麼在調用時,
能夠不指定實參,默認使用本身的值
def func(a,b,*,c=5):  
    print(a,b,c)
func(1,2,c=6)  #有實參先用實參,沒有實參才使用默認形參
結果: 1 2 6


#形式3:
def func(*args,d,**kwargs):
    print(args) # 1 2 23
    print(kwargs) # {'c':1,'f':2}
    print(d) #  3
func(1,2,23,c=1,f=2,d=3)
結果:寫在每行輸出的#後面了
#(3)* **的魔術用法
    ***在函數的定義處,負責打包(把實參都收集過來,放在元組或字典中)
   #1:
def func(a,b,c):
    print(a,b,c)

listvar = [1,2,3]
# * 通常修飾列表更多一些(負責把列表裏面的元素一個個拿出來的進行函數調用)
func(*listvar) #<==> func(1,2,3)
#結果輸出: 1 2 3
#能夠這樣用func(*(1,2,3))


#2:
def func(a,b,c,*,d,e,f):
    print(a,b,c)
    print(d,e,f)
listvar = [1,2,3]
dic = {"d":4,"e":5,"f":6} #func(d=4,e=5,f=6)
# ** 通常修飾字典,(負責把字典裏面的鍵值對變成d=4,e=5的形式,進行函數調用)
func(1,2,3,**dic) #<===>d = 4,e = 5,f = 6
#* 和 **的解包操做
func(*listvar,**dic)

#函數參數的默認順序:
必須按照以下的參數順序進行定義:
普通形參(位置形參) -> 默認形參 -> 普通收集參數 -> 命名關鍵字參數 -> 關鍵字收集參數
#:
def f1(a,b,c=0,*args,**kw):
    print('a =',a,'b =',b,'c =',c,'args =',args,'kw =',kw)

def f2(a,b,c=0,*,d,**kw):
    print('a =',a,'b =',b,'c =',c,'d =',d,'kw =',kw)

print("=============分隔=============")
#(一)
f1(1,2) #a=1 b=2 c=0 args=() kw={}
f1(1,2,c=3) #a=1 b=2 c=3 args=() kw={}ffffffffffffff
f1(1,2,3,'a','b')#a=1 b=2 c=3 args=('a','b') kw={}
#f1(1,2,3,'a','b',x=99) #a=1 b=2 c=3 args=('a','b') kw={'x':99}
#f2(1,2,d=99,ext=None) #a=1 b=2 c=0 d=99 kw={'ext':None}

#(二)
print("=============分隔=====二========")
args = (1,2,3,4)
kw = {'d':99,'x':'#'}
f1(*args,**kw) #a=1 b=2 c=3 d=99 args=(4,) kw={'x':'#'}

#*args ==> f1(1,2,3,4)
#**kwargs ==> f1(d=99,x="#")

#(三)
print("=============分隔=====三========")
def f2(a, b, c=0, *, d, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
myargs = (1,2,3)
mykw ={'d':88,'x':'#'}
f2(*myargs,**mykw) #a=1 b=2 c=3 d=88 kw={'x':'#'}

#(四)
#定義處
print("=============分隔=====四========")
def f1(a,b,c=0,*args,d,**kw):
    print('a =',a,'b =',b,'c =',c,'args =',args,'kw = ',kw)
    print('d=',d)
#調用處
f1(1,2,3,'a','b',d=67,x=99,y=77)
#a=1 b=2 c=3 args=('a','b') kw={'x':99,'y':77}
#d=67

#普通收集形參 關鍵字收集形參 能夠接受到全部種類的參數
# *args,**kwargs 都是可變長參數,參數的長度不限制
def func(*args,**kwargs):
    pass

相關文章
相關標籤/搜索