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