回顧
- 條件語(yǔ)句:if elif else , pass
-
- 循環(huán)語(yǔ)句:
- while 要寫(xiě)終止條件
- for 遍歷迭代對(duì)象
-
- 三種通用操作:
- break 強(qiáng)制結(jié)束循環(huán)
- continue 跳過(guò)本次循環(huán)
- else 當(dāng)循環(huán)正常結(jié)束就會(huì)執(zhí)行懊纳,else 里面的語(yǔ)句
def selFor(iterable): # 駝峰命名規(guī)則 selFor
for i in iterable:
print(i)
定義函數(shù)
def fun(a): # def 定義函數(shù)關(guān)鍵字
print('hello',a) # 函數(shù)體
傳參(5種方法)
不需要傳參數(shù)
def fun():
print('hello python')
print('人生苦短揉抵,我用python!')
必備參數(shù)
def fun2(a):
print('必備參數(shù):',a)
fun2('a')
#必備參數(shù):a
可選參數(shù)
arg
# *arg
def fun4(*arg): # 默認(rèn)將我們傳入的參數(shù)包裝成元組
print('arg:',arg)
tu = (1,2,3,4,5)
fun4(tu)
#arg:((1,2,3,4,5))
fun4(*tu)
#arg:(1,2,3,4,5)
kwarg
**kwarg
# 傳值的時(shí)候必須要滿足字典的定義: di = dict(a=1)
def fun5(**kwarg): # 默認(rèn)將我們傳入的參數(shù)包裝成字典
print('kwarg:',kwarg)
di = dict(a=4)
fun5(a=1,b=2,c=3)
# kwarg:{'a'1,'b':2,'c':3}
fun5(**di) # 傳入字典時(shí)必須加上**
# kwarg:{‘a(chǎn)':4}
5種傳參混合用時(shí),需要注意的事項(xiàng):
默認(rèn)參數(shù)嗤疯,必備參數(shù)
def fun6(b,m=2): # 默認(rèn)參數(shù)必須放到必備參數(shù)之后
print('必備參數(shù):',b)
print('默認(rèn)參數(shù):',m)
fun6(1,3)
# 必備參數(shù):1
# 默認(rèn)參數(shù):3
*arg冤今,默認(rèn)參數(shù),必備參數(shù)
def fun7(b,m=2,*arg):
print('必備參數(shù):',b)
print('默認(rèn)參數(shù):',m)
print('arg:',arg)
fun7(1,2,3,4,5,6,7)
#必備參數(shù): 1
#默認(rèn)參數(shù): 2
#arg: (3,4,5,6,7)
def fun8(*arg,b,m=2): # 當(dāng)*arg寫(xiě)在最前時(shí),后面的參數(shù)必須指定
print('必備參數(shù)',b)
print('默認(rèn)參數(shù)',m)
print('arg',arg)
#fun8(1,2,3,4,5,6,7) 報(bào)錯(cuò)
fun8(1,2,3,4,5,b=6,m=7)
#必備參數(shù): 6
#默認(rèn)參數(shù): 7
#arg: (1, 2, 3, 4, 5)
def fun9(*arg,m=2,b): # 當(dāng)*arg寫(xiě)在最前時(shí),默認(rèn)參數(shù)可以放到必備參數(shù)前面
print('必備參數(shù)',b)
print('默認(rèn)參數(shù)',m)
print('arg',arg)
#fun8(1,2,3,4,5,6,7) 報(bào)錯(cuò)
fun9(1,2,3,4,5,b=6,m=7)
#必備參數(shù): 6
#默認(rèn)參數(shù): 7
#arg: (1, 2, 3, 4, 5)
arg茂缚,*kwarg
def fun10(*arg,**kwarg): # **kwarg ,只能放到最后
print('arg:',arg)
print('kwarg:',kwarg)
fun10(1,2,3,4,5,6,7)
#arg:(1,2,3,4,5,6,7)
#kwarg:{}
fun10(1,2,3,4,5,a=6,b=7)
#arg:(1,2,3,4,5)
#kwarg:{'a':6,'b':7}
return
如果函數(shù)中沒(méi)有寫(xiě)return戏罢,其實(shí)函數(shù)運(yùn)行結(jié)束時(shí)默認(rèn)執(zhí)行了 return None
def fun()
print('hello')
print('python')
fun()
#hello
#python
a = fun()
print(a)
# None
return: 返回函數(shù)運(yùn)行的結(jié)果
print: 打印輸出,只是用來(lái)看的
def test_return(a,b):
if a>b:
return a
elif b>a:
return b
else:
return '一樣大'
函數(shù)結(jié)束的標(biāo)志脚囊,只要運(yùn)行了return龟糕,就強(qiáng)制結(jié)束了函數(shù),return后面的程序都不會(huì)被執(zhí)行
def test_return(a,b):
if a>b:
return a
elif b>a:
return b
else:
return '一樣大'
print('比較結(jié)束') # 不會(huì)被執(zhí)行
test_return(1,3)
#3
def test_return(a,b):
if a>b:
print(a)
elif b>a:
print(b)
else:
print('一樣大')
print('比較結(jié)束')
test_return(1,3)
#3
#比較結(jié)束
return 語(yǔ)句的位置是可選的悔耘,不是固定出現(xiàn)再函數(shù)的最后讲岁,可以自定義在函數(shù)中的任何地方
def test_return(a,b):
return 'zhangge'
if a>b:
print(a)
elif b>a:
print(b)
else:
print('一樣大')
test_return(1,3)
#'zhangge'
lambda 匿名函數(shù),沒(méi)有名字的函數(shù)
lambda 簡(jiǎn)化了函數(shù)定義的書(shū)寫(xiě)形式衬以,使代碼更為簡(jiǎn)潔缓艳,使函數(shù)的定義方式更為直觀,易理解
lambda的應(yīng)該場(chǎng)景:
1.有些函數(shù)如果只是臨時(shí)一用泄鹏,而且它的業(yè)務(wù)邏輯也很簡(jiǎn)單時(shí)郎任,就沒(méi)必要用def來(lái)定義秧耗,這個(gè)時(shí)候可以用lambda
2.函數(shù)都支持函數(shù)作為參數(shù)备籽,lambda函數(shù)就可以應(yīng)用
#lamdba x(參數(shù)) :x+1 (return x+1)
g = lambda x:x+1
g(1)
#2
#傳入多個(gè)參數(shù)
add = lambda x,y:x+y
add(1,2)
#3
#判斷偶數(shù)?
even = lambda x:x%2==0
even(2)
#True
重點(diǎn):
1.理解函數(shù)的概念和作用
2.熟練掌握函數(shù)的定義和調(diào)用