python基礎07

4.6函數的默認(缺省)參數和不定長參數

4.6.1默認參數

函數在定義的時候就已經給這個參數賦了值。

(1)經驗:

默認參數可以不傳實參,如果傳遞實參就修改默認參數的值

定義默認參數的時候,默認參數要寫到位置參數的後面。如果同時有*args和**kwargs以及默認參數,則順序爲:*args——默認參數——**kwargs

默認參數可以關鍵字參數傳值,但要寫到位置參數的後面

(2)默認參數儘量不要是可變數據類型

4.6.2不定長參數

基本語法:

寫法一:*args 不確定位置參數個數時,收集成元組

#*args:位置參數,收集成元組

def func1(*args):

    print(args)

    for i in args:

        print(i)



func1('python', 28, 'man','meiguo')

寫法二:**kwargs 不確定關鍵字參數個數時,合併成字典

# **kwargs :收集關鍵字參數,合併字典

def func2(**kwargs):

    print(kwargs)

    for key,value in kwargs.items():

        print(key)

        print(value)



func2(name='python',age=28,sex='man',weizhi='helan')

注意:

(1)在定義函數時,不定長參數都放到最後

(2)不定長參數可以不接收值

經典例子:

def func1(a, *args, b=1, **kwargs):

    print(args)

    for i in args:

        print(i)
    print(kwargs)

    for key, value in kwargs.items():

        print(key)

        print(value)

func1(1,'name', 'python', 'age',28,b=2,name='python')

#注意:調用函數參數時的順序爲必須傳遞的參數在最左邊,然後是多餘的位置參數、關鍵字參數,最後是多餘的關鍵字參數

4.7匿名函數(即:lambda表達式)

語法:

lambda 參數:返回值(or表達式)#注意:不需要寫return

如:

print((lambda :100)())



f = lambda a,b : a + b

print(f(10, 20))



f = lambda a,b,c=100: a + b + c

print(f(10, 20,200))



print( (lambda *args:args)(20, 30, 40) ) #得到一個(20,30,40)的元組



#args的列表和a和b做合併

print((lambda *args,a=100,b=200:list(args) + [a, b])(10, 20, 30))



print((lambda **kwargs:kwargs)(name='python',age=28)) #返回一個字典

#實現鍵值對互轉:

print((lambda **kwargs:{value:key for key,value in kwargs.items()})(name='python',age=28))

重要用途:

(1)lambda可以作爲函數的一個參數使用

如:

def test(a, b, xxx):

return xxx(a, b)

result = test(11, 22, lambda x, y: x-y)

# 此處的減號可改爲其它符號,改成什麼符號做什麼運算

print(result)

(2)帶判斷的lambda

#a,b,對比大小 返回最大值

print((lambda a,b :a if a>b else b)(1000, 20))

#a,b,c,對比大小 返回最大值

print((lambda a,b,c:c if c > (a if a>b else b) else (a if a>b else b))(100, 2000, 30))

(3)用在sort中可以按照鍵名快速排序

info_list=[

{'name':'zhansan','age':20},

{'name':'lisi','age':18},

{'name':'laowang','age':30}

]

info_list.sort(key=lambda info:info['age'],reverse=True)

print(info_list)

發佈了51 篇原創文章 · 獲贊 2 · 訪問量 5936
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章