python中的参数函数_python中函数与参数的简介
函數(shù)
函數(shù)就是具有某個具體功能的工具
而使用用函數(shù)能提供開發(fā)效率,減少代碼冗余,提高程序的擴展性。
在Python中,函數(shù)有五大要點:分別是def、函數(shù)名、函數(shù)體、參數(shù)、返回值,以及兩個英文版符號,分別是括號(括號內(nèi)為參數(shù))和冒號":"函數(shù)內(nèi)容以冒號起始,并且縮進。
def:定義函數(shù)的關鍵字,沒它可不行,后接函數(shù)標識符名稱和圓括號()加":",任何傳入?yún)?shù)和自變量必須放在圓括號中間。圓括號之間可以用于定義參數(shù)。
函數(shù)名:函數(shù)的名稱,不能以關鍵字起名字,根據(jù)函數(shù)名調(diào)用函數(shù),雖然函數(shù)名可以隨便起,但我們給函數(shù)起名字還是要盡量簡短,并能表達函數(shù)功能,函數(shù)也應該做到見名知意。
函數(shù)體:函數(shù)中進行一系列的具體操作。
參數(shù):為函數(shù)體提供數(shù)據(jù)。
返回值:當函數(shù)執(zhí)行完畢后,可以給調(diào)用者返回數(shù)據(jù)。
但是在函數(shù)中,最重要的是參數(shù)和返回值。
如果我們在定義函數(shù)的時要候沒有想好定義函數(shù)的內(nèi)容可以先用空函數(shù):空函數(shù)就是什么事也不做,可以用pass語句。既然“一事不做”,那空函數(shù)還有什么用處?實際上pass可以用來作為占位符,比如現(xiàn)在還沒想好怎么寫函數(shù)的代碼,就可以先放一個pass,讓代碼能運行起來。如此,運行代碼程序就不會出現(xiàn)錯誤了。
1#空函數(shù)
2defnop():3pass
函數(shù)必須先定義再調(diào)用:
1 s = [1,2,3,4,5]2 def my_len(): #自定義函數(shù)
3 n =04 for i ins:5 n += 1
6 print(n)7 res = my_len()
但是用我們自己寫的函數(shù)現(xiàn)在的問題:
1.沒有返回值 只能固定的執(zhí)行打印操作
2.只能夠固定的統(tǒng)計某一個容器類型的長度
函數(shù)內(nèi)要想返回給調(diào)用者值 必須用關鍵字retur:
"""不寫return
只寫return
寫return None
寫return返回一個值
寫return返回多個值"""
#不寫return:函數(shù)默認返回None
deffunc():print('hehehehe')
res=func()print(res) #hahaha None
#只寫return:return除了可以返回值之外 還可以直接結(jié)束整個函數(shù)的運行#只寫return None 返回的也是None(None就表示什么都沒有)
deffunc():
l= ['apple','banana','orange']whileTrue:for i inl:if i == 'banana': #當i為banana的時候 直接結(jié)束函數(shù)運行
return #結(jié)束整個函數(shù)運行
#print('asdasdkljlsjadl') # 這一行代碼永遠都不會運行
print(i)
res=func()print(res) #apple None
#寫return None:返回的也是None(None就表示什么都沒有)跟上面的只寫return是一樣的
deffunc():returnNone
res=func()print(res) #None
#寫return返回一個值:這個值可以是python任意數(shù)據(jù)類型
deffunc():return '123' #返回的是123
deffunc1():return [1,2,3] #返回的是[1,2,3]
deffunc2():return {'cat':'貓'} #返回的是{'cat':'貓'}
deffunc3():return (1,2,3) #返回的是(1,2,3)
deffunc4():return {1,2,3,4,5} #返回的是{1,2,3,4,5}
deffunc5():return True #返回的是True
print(func(),func1(),func2(),func3(),func4(),func5())#寫return返回多個值:return會自動將多個值以元組的形式返回給調(diào)用者,元組不會被修改
deffunc():return 1,2,3,4 #返回的是(1, 2, 3, 4)
res =func()print(res)deffunc1():return 'a','b','c' #返回的是 ('a', 'b', 'c')
res =func1()print(res)"""1.所有的函數(shù)都有返回值,無論你寫不寫return
python中所有的函數(shù)都有返回值 不寫的情況下默認返回None
2.光寫return 或者return None并不是為了考慮返回值 而是為了結(jié)束函數(shù)的運行"""
param 參數(shù):positional arguments:位置參數(shù):
def my_len(args): #需要0個參數(shù)
print(args)
n=0for i inargs:
n+= 1
returnn
res= my_len("abcd")print(res)
my_len("aabb") #給my_len傳了一個參數(shù)
print(my_len('hello'))print(my_len('hello world'))print(my_len([1,2,3,4,5]))"""函數(shù)參數(shù)的兩大類型
形參:在函數(shù)的定義階段 括號內(nèi)寫的變量名 叫做該函數(shù)的形式參數(shù) 簡稱 形參
實參:在函數(shù)的調(diào)用階段 括號內(nèi)實際傳入的值 叫做實際參數(shù) 簡稱 實參
形參與實參的關系
形參就相當于變量名,而實參就相當于變量的值
函數(shù)調(diào)用傳參的過程 就是給形參變量名賦值的過程
注意:形參和實參的綁定關系只在函數(shù)的調(diào)用階段有效,函數(shù)運行結(jié)束關系自動解除
只在函數(shù)內(nèi)部有效 函數(shù)外部無任何影響"""
位置參數(shù):在函數(shù)定義階段按照位置從左往右依次書寫的變量名 叫做函數(shù)位置形參
位置形參在調(diào)用的時候 必須為其傳值
#第一種直接按照位置傳 一一對應
defmy_max(x,y):print(x,y)if x >y:returnxelse:returny#res = my_max(1) # 報錯 在調(diào)用函數(shù)的時候 少一個實參不行#res = my_max(1,2,3) # 報錯 在調(diào)用函數(shù)的時候 多一個實參也不行
res = my_max(20,10) #位置實參:在函數(shù)的調(diào)用階段 傳入的參數(shù)會按照位置一一對應給形參
print(res)#第二種指名道姓的傳 >>>:關鍵字傳參
defmy_max(x,y):print(x,y)if x >y:returnxelse:returny
my_max(y=20,x=10)
my_max(10,y=20) #位置和關鍵字混合使用
my_max(20,y=40) #位置必須在前
"""在函數(shù)的調(diào)用階段 位置參數(shù)和關鍵字參數(shù)可以混合使用但是必須保證
1.位置參數(shù)必須在關鍵字參數(shù)的前面(越短的越靠前,越長的越復雜的越靠后)
2.同一個形參不能被多次賦值"""
默認值參數(shù):在函數(shù)的定義階段,形參(變量名)就已經(jīng)被賦值了
在調(diào)用的時候可以不為默認值形參傳值,默認使用定義階段就已經(jīng)綁定的值
在調(diào)用的時候如果可以給默認值形參傳值 傳了那么就使用你傳的值
在定義階段 默認值形參必須放在位置形參的后面
def register(username,age,gender='male'):print(username,age,gender) #當形參接收的到值比較單一的情況下 通??梢钥紤]用默認值形參
register('小明',18)
register('小磊',19)
register('小紅',20,"female")
register('小賤',21)
register('小芳',22,'female')
可變長參數(shù):
站在調(diào)用函數(shù)傳遞實參的角度 實參的個數(shù)不固定的情況
也就意味形參也不固定
站在形參的角度 可以用*和**來接收多余的(溢出的)位置參數(shù)和關鍵字參數(shù)
#站在形參的角度 看 *#形參中的*會將多余的(溢出的)位置實參 統(tǒng)一用元組的形式處理 傳遞給*后面的形參名
def func(x,y,*z):print(x,y,z) #z = (3, 4, 5, 6, 7, 8, 54, 43, 4, 5, 6, 6, 7, 8)
func(1,2,3,4,5,6,7,8,54,43,4,5,6,6,7,8,)#站在實參的角度 看 *
def func1(x,y,*z):print(x,y,z)
func1(*[1,2,3,4,5,6]) #*會將列表打散成位置實參一一傳入等價于func1(1,2,3,4,5,6) func1(*(1,2,3)) # 等價于func(1,2,3)
def func2(x,*z):print(x,z)
func2(1,*{1,2,3}) #*在形參中只能接收多余的位置實參 不能接收關鍵字實參#*只能將列表 元組 集合 字符串#*的內(nèi)部你可以看成是for循環(huán)
#站在形參的角度看 **
def func(x,y,**z):print(x,y,z) #z = {'z': 1, 'a': 1, 'b': 2, 'c': 3}
func(x=1,y=2,z=1,a=1,b=2,c=3)#**會接收所有多余的關鍵字參數(shù) 并將關鍵字參數(shù) 轉(zhuǎn)換成字典的形式 字典的key就是關鍵字的名字#字典的value就是關鍵字的名字指向的值 將字典交給**后面的變量名
#站在實參的角度看 **
deffunc(x,y,z):print(x,y,z)
func(12,3,4)
func(x=1,y=2,z=3)
d= {'x':1,'y':2,'z':333}
func(x=1,y=2,z=3)
func(**d) #等價于func(x=1,y=2,z=333)#**會將字典拆封成 key = value的形式
"""* 與 **
*在形參中能夠接受多余的位置參數(shù) 組織成一個元祖賦值給*后面的變量名
**在形參中能夠接受多余的關鍵字參數(shù) 組織成一個字典賦值給**后面的變量名
*:在實參中 *能夠?qū)⒘斜?元祖 集合 字符串 打散成位置實參的形式傳遞給函數(shù)
(*就看成是for循環(huán)取值)
**:在實參中 能將字典打散成key = value的形式 按照關鍵字參數(shù)傳遞給函數(shù)"""
總結(jié)
以上是生活随笔為你收集整理的python中的参数函数_python中函数与参数的简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu16安装anaconda显示
- 下一篇: Ubuntu16安装anaconda没有