跟着太白老师学python 09day 初识函数
函數(shù)的最主要的目的:封裝一個(gè)功能
函數(shù)的優(yōu)點(diǎn):
減少代碼的復(fù)用率, 增加代碼的閱讀性
def my_len(arvg): # arvg 形參 my_len函數(shù)名,應(yīng)該具有代表性,讓你一看就明白# 函數(shù)體count = 0for i in arvg:count += 1return count print(my_len(s)) # s實(shí)參return 特點(diǎn):遇到return結(jié)束程序, 返回一些信息
如果當(dāng)只有一個(gè)返回值時(shí),返回是什么就是什么類型的
如果當(dāng)有多個(gè)返回值時(shí),將返回一個(gè)元組,元組里是需要返回的值
def fun1():a = 1b = 2c = a + bd = 'alex'return c, d print(fun1())>>>(3, 'alex')
函數(shù)傳參:
? ? ? ? ? ?#實(shí)參 ? ?函數(shù)執(zhí)行者實(shí)際的參數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ?1.位置參數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ?2.關(guān)鍵字參數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ?3. 混合參數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1.位置參數(shù):按照位置一一對(duì)應(yīng)
def fun2(a, b, c):print(a, b, c)fun2(1, 2, 3)>>> 1 2 3
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2 關(guān)鍵字參數(shù): 按照所給參數(shù)一一對(duì)應(yīng)
def func3(x, y):return x, y print(func3(y=1, x=2))>>>>(2, 1)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3. 混合參數(shù) 由位置參數(shù)和關(guān)鍵字參數(shù)組成, 關(guān)鍵字參數(shù)一定要在位置參數(shù)的后面
def func4(x, y, z):return x, y, z print(func4(1, z=2, y=3))? ? ? ? ? ? ? ?形參
? ? ? ? ? ? ? ? ? ? ? ? ?1.位置參數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ?2.默認(rèn)參數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 位置參數(shù): 按照位置一一對(duì)應(yīng)
def func5(x, y):return x + yprint(func5(1, 2))? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2. 默認(rèn)參數(shù),如果不傳,就默認(rèn)使用,函數(shù)里的默認(rèn)值,如果傳就使用傳入的值,默認(rèn)值設(shè)置一般考慮使用量比較多的情況
def login(name, sex='男'):f = open('a1.txt', encoding='utf-8', mode='a') #打開文件寫入f.write('{}|{}\n'.format(name,sex))f.close()while True:content = input('請(qǐng)輸入姓名和性別,默認(rèn)為Q,按,分隔, 按Q退出')name, sex = content.strip().split(',')if name.upper() == 'Q':breakif sex: #如果有值,就傳入 login(name, sex)else: #沒有值,就默認(rèn)使用sex='男'login(name)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?默認(rèn)參數(shù)的注意事項(xiàng),這里有坑
? ?
def func6(x, l1=[]):l1.append(x)return l1 tag_1 = func6(1) print(tag_1, id(tag_1)) tag_2 = func6(2) print(tag_2, id(tag_2))>>>>
[1] 4612744
[1, 2] 4612744
我們可以發(fā)現(xiàn)兩次執(zhí)行時(shí)的l1可變參數(shù),指向的是同一個(gè)內(nèi)存地址,因此1和2都被添加到同一個(gè)l1中,所以在使用默認(rèn)參數(shù)的時(shí)候,最好不要使用可變數(shù)字類型,不可變數(shù)字類型包括數(shù)字,字母,布爾值,元組,一般都使用前3個(gè)來設(shè)置默認(rèn)參數(shù).
如果非要是使用,我們需要使用 l = [],重新復(fù)制,更換 l 的地址
?
def func6(x, l=[]):l = []l.append(x)return l tag_1 = func6(1) print(tag_1, id(tag_1)) tag_2 = func6(2) print(tag_2, id(tag_2))?三元運(yùn)算 是一種判斷的簡便寫法
def func7(x, y):return x if x > y else yprint(func7(1, 2))?
?
?
?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ?
轉(zhuǎn)載于:https://www.cnblogs.com/my-love-is-python/p/9481895.html
總結(jié)
以上是生活随笔為你收集整理的跟着太白老师学python 09day 初识函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Python]程序结构与控制流
- 下一篇: [python] redis 模块 --