python3 函數(基礎知識二)

1. python 函數的參數傳遞
    1.傳遞方式:
        位置傳參
        序列傳參
        關鍵字傳參
        字典關鍵字傳參
    2. 位置傳參:
        實際調用參數(實參)的對應關係與形式參數(形參)的對應關係
        是按位置來一次對應的
        示意:
def fx(a,b,c):
    pass
fx(1, 2, 3)
    3.序列傳參:
        序列傳參是批在函數調用過程中,用*將序列拆解後按位置進行
        傳遞的傳參方式,實參和形參通過序列傳遞和匹配
        示例1:
def fx(a, b, c):
    pass
s1 = [11, 22, 33]  #列表
fx(*s1)  # 將s1序列拆解後按位置傳入fx中
        示例2:
def fx(a, b, c):
    print('a = ', a)
    print("b = ", b)
    print('c = ', c)
s1 = [11, 22, 33]
# fx(s1[0],s1[1],s1[2]) # 用索引傳參
fx(*s1) # 序列傳參,*代表將s1 拆解後再依次傳入
fx(*"ABC")  # A  B  C
fx(*(101,102,103))
    4.關鍵字傳參
        是指傳參時,按着形參的名稱給形參賦值
        實參和形參按名稱進行匹配
        示例:
def fx(a, b, c):
    pass
fx(b=22, c=33, a=11) # 11--->a, 22---->b, 33---->c
    注:
            實參和形參按形參名進行匹配,可以不按位置進行匹配
# 此示例示關鍵字列傳參
def fx(a, b, c):
    print('a = ', a)
    print("b = ", b)
    print('c = ', c)
fx(b=22, c=33, a=11)
    5.字典關鍵字傳參:
        實參爲字典,用**拆解字典後再進行關鍵字傳參
        示例:
def fx(a, b ,c):
    pass
d = {'c':33, 'b': 22, 'a':11}
fx(**d) # 拆解字典內依次按關鍵字傳參
      說明:
            字典的鍵名和形參名必須一致
            字典的鍵名必須爲字符串
            字典的鍵名必須在形參中存在
# 此示例示字典關鍵字列傳參
def fx(a, b, c):
    print('a = ', a)
    print("b = ", b)
    print('c = ', c)
d = {'c':33, 'b': 22, 'a':11}
fx(**d)
    6.綜合傳參:
        函數的傳參方式子能確定形參能唯一匹配到相應實參的情況下
        可以任意組合
        注:
            通常位置傳參和序列傳參先傳遞,其次關鍵字傳參和字典關鍵字傳參
        示例:
def fx(a,b,c,e,f):
    pass
fx(10, *[20,30],e=50,**{'d':40,'f':60})
# 以下是錯誤的做飯
fx(e=50,**{'d':40,'f':60},10, *[20,30])
2.函數的形參
    1.函數的缺省參數
        語法:
            def 函數名(形參名1=默認實參1,形參名2=默認實參2,....):
                  語句
        示例:
def info(name,age=1,address="不詳"):
      print("我叫",name, '我今年:',age, '歲,家庭住址:',address)
info("張飛",30,"中原")
info("Tarena",10)
info('趙雲')
# 我叫 張飛 我今年: 30 歲,家庭住址: 中原
# 我叫 Tarena 我今年: 10 歲,家庭住址: 不詳
# 我叫 趙雲 我今年: 1 歲,家庭住址: 不詳
        說明:
            缺省參數必須自右至左(倒序)依次存在
            缺省參數可以有0個,1個,多個,甚至全部都有缺省參數
            缺省參數的綁定對象存在於函數內,同函數的生命週期一致
        示例:
def fn(a,lst=[]):
    lst.append(a)
    print(lst)
L = [1,2,3,4]
fn(5,L) # [1, 2, 3, 4, 5]
fn(6,L) # [1, 2, 3, 4, 5,6]

fn(1.1)  # [1.1]
fn(2.2)  # [1.1, 2.2]
fn(3.3)  # [1.1, 2.2, 3.3]
fn(4.4)  # [1.1, 2.2, 3.3, 4.4]
    2.函數的形參定義方式:
        1.位置形參
        2.星號元組形參
        3.命名關鍵字形參
        4.雙星號字典形參
    3.位置形參:
        def 函數名(形參名1,形參名2...)
            語句塊
    4.星號元組形參:
        語法:
            def 函數名(*元組形參名):
                語句塊
        作用:
            收集位置多餘的位置傳參
        示例:
# 此示例示意星號元組形參
def func(*args):
      print("實參個數是:",len(args))
      print("args的值是:",args)
func(1,2,3)
func("ABCD",3.14,100,True,None)
    5.命名關鍵字形參
        語法:
            def 函數名(*,命名關鍵字形參):
                語句塊
            或
            def 函數名(*arge,命名關鍵字形參):
                語句塊
        作用:
            所有的命名關鍵字形參都是強調採用者採用關鍵字傳參或字典關鍵字傳
            參的方式調用
        示例1:
# 此示例示意命名關鍵字形參
def myfun(a,*,k):
    print("a =", a)
    print("k =", k)
myfun(100,k=200) # k強調使用關鍵字傳參
myfun(10,**{'k':20})
    示例2:
def myfun2(b, *args, c, d):
    print("b=",b)
    print("args=",args)
    print("c=",c)
    print("d=",d)
myfun2(100,200,300,400,d=600,c=500)
    6.雙星號字典形參:
        語法:
            def 函數名(**字典形參名):
                語句塊
        作用:
            收集多餘的關鍵字傳參
        注:
            字典形參名通常叫kwargs
        示例:
# 此示例示意雙星號字典形參的用法:
def func(**kwargs):
    print("關鍵字傳參的個數是:",len(kwargs))
    print("kwargs=",kwargs)
func(name='tarena',age=15)
func(a=1, b='BBBB',c=[2,3,4],d=True)
3.函數參數說明:
    位置形參,缺省參數,星號元組形參,命名關鍵字形參,雙星號字典形參,
    可以混合使用

    函數參數自左至由的順序爲:
        1.位置形參
        2.星號元組形參
        3.命名關鍵字形參
        4.雙星號字典形參
    示例:
def fn(a,b,*args,c,**kwargs):
    pass
fn(100,200,300,400,*"AB",**{'d':"D"},c=100)
4.可以接受任意位置傳參和關鍵字傳參的函數:
def fn(*args,**kwargs):
 	print(args,kwargs)
fn(100,200,300,400,a=100,b=200,**{'c':3,'d':5})
# (100, 200, 300, 400) {'c': 3, 'b': 200, 'd': 5, 'a': 100}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章