深入了解python的函數(shù)參數(shù)
位置參數(shù)
這是一個(gè)求等差數(shù)列和的函數(shù),使用必需要傳入一個(gè)參數(shù)n,這就是位置參數(shù)
def sum(n):
sum=0
i=1
while i<=n:
sum+=i
i+=1
return sum
result=sum(100)
print(result)

默認(rèn)參數(shù)
默認(rèn)參數(shù)就是,我在函數(shù)中已經(jīng)將一個(gè)參數(shù)提前設(shè)置好了值,如果你沒有傳入這個(gè)參數(shù)的值,就會(huì)用我事先設(shè)置好的值,如果你傳入了就用你的
我這里定義了一個(gè)求x的y次方的方法
def power(x,y=2):
return x**y
print(power((2)))
print(power(2,3))

關(guān)鍵字參數(shù)
def printmessage(name,age,*args,gender):
print(name,age,args,gender)
print(type(args))
printmessage("趙四",40,12345456,"男")
首先來看一下這個(gè)問題,我把一個(gè)多值參數(shù)寫在了一個(gè)位置參數(shù)的前面這會(huì)發(fā)生什么事情?

報(bào)錯(cuò)信息:找不到”gender“這個(gè)字段對(duì)應(yīng)的值
printmessage("趙四",40,12,34,54,56,"男")
*args是一個(gè)多值參數(shù),他把后面所有的值都給收納了,所以我們傳入值得時(shí)候,需要把對(duì)應(yīng)參數(shù)名也寫上,這樣才能識(shí)別這是單獨(dú)一個(gè)參數(shù)的值
def printmessage(name,age,*args,gender):
print(name,age,args,gender)
print(type(args))
printmessage("趙四",40,12,34,54,56,gender="男")

這個(gè)關(guān)鍵字參數(shù)還有什么用處呢,只要指定了參數(shù)名,我們可以不按函數(shù)里面設(shè)置的參數(shù)順序傳入值,但是一旦這樣打亂順序,多值參數(shù)就無法識(shí)別出哪里是他可以接收值的地方,所以我就傳入了其他3個(gè)參數(shù)
def printmessage(name,age,*args,gender):
print(name,age,args,gender)
print(type(args))
printmessage(age=45, gender='男', name='劉能')

可能有人不相信上面的結(jié)論
我隨便放哪個(gè)位置都是不能識(shí)別的

最后一個(gè)情況沒有報(bào)錯(cuò),但是這個(gè)語法是錯(cuò)誤的,他會(huì)認(rèn)定你傳入的1就是name,但是后面再次出現(xiàn)了name,并且缺少值得問題還是沒解決

那我們?cè)囋囉胊rgs接收一個(gè)元組試試?
printmessage(age=45, gender='男', name='劉能',args=(1,2,3,4))
很遺憾,根本無法識(shí)別這個(gè)關(guān)鍵字

所以打亂順序傳值的時(shí)候千萬別有多值參數(shù)
多值參數(shù):
可變參數(shù)分為2種
接收元組參數(shù):*args 一個(gè)*的是接收多個(gè)數(shù)據(jù)放入元組
接受字典參數(shù):**args 兩個(gè)*的接受的是k=v類型的數(shù)據(jù),將他們放入一個(gè)字典
元組:
def sumN(*args):
# args是參數(shù)名
# 要操作傳入的參數(shù) 可以對(duì)args(相當(dāng)于有參數(shù)構(gòu)成的tuple)進(jìn)行遍歷
print(args, type(args))
sum = 0
for i in args:
sum += i
print(sum)
sumN(1,2,3,5)

元組注意的事項(xiàng)就是,如果有參數(shù)在接受元組參數(shù)的后面,要用關(guān)鍵字參數(shù)傳值
字典:
def printmessage(name,age,gender,**kw):
print(name,age,gender,kw)
print(type(kw))
printmessage("趙四",40,"男",address="象牙山",phonenumber="888888")

傳入字典的多值參數(shù)后面是不能跟參數(shù)的,他只能放在函數(shù)參數(shù)的最后一個(gè)位置

還有,想用關(guān)鍵值傳遞的,傳入的時(shí)候別亂調(diào)位置,要是到了**args的范圍,就少了一個(gè)參數(shù)
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Scrapy框架爬取Boss直聘網(wǎng)Python職位信息的源碼
今天小編就為大家分享一篇關(guān)于Scrapy框架爬取Boss直聘網(wǎng)Python職位信息的源碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02
Python編寫一個(gè)驗(yàn)證碼圖片數(shù)據(jù)標(biāo)注GUI程序附源碼
這篇文章主要介紹了Python編寫一個(gè)驗(yàn)證碼圖片數(shù)據(jù)標(biāo)注GUI程序,本文給大家附上小編精心整理的源碼,需要的朋友可以參考下2019-12-12
python讓圖片按照exif信息里的創(chuàng)建時(shí)間進(jìn)行排序的方法
這篇文章主要介紹了python讓圖片按照exif信息里的創(chuàng)建時(shí)間進(jìn)行排序的方法,涉及Python操作圖片exif獲取信息的技巧,需要的朋友可以參考下2015-03-03
分位數(shù)回歸模型quantile regeression應(yīng)用詳解及示例教程
這篇文章主要為大家介紹了介紹了分位數(shù)回歸quantile regeression的概念詳解及代碼示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
詳解用pyecharts Geo實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)熱力圖城市找不到問題解決
這篇文章主要介紹了詳解用pyecharts Geo實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)熱力圖城市找不到問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Python循環(huán)語句之break與continue的用法
這篇文章主要介紹了Python循環(huán)語句之break與continue的用法,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-10-10

