免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
函數(shù)參數(shù)傳遞

Python里面對(duì)函數(shù)參數(shù)傳遞分以下幾種:

  • 位置參數(shù)
  • 默認(rèn)參數(shù)   #在函數(shù)運(yùn)行前參數(shù)就被賦了值
  • 關(guān)鍵字參數(shù)  #通過(guò)變量名字進(jìn)行匹配,而不是通過(guò)位置
  • 可變長(zhǎng)度參數(shù)

1)任意多個(gè)非關(guān)鍵字可變長(zhǎng)參數(shù)(元組)

2)任意多個(gè)關(guān)鍵字變量參數(shù)(字典)

有同學(xué)說(shuō)怎么這么麻煩啊,這跟我們生活中的很多產(chǎn)品類(lèi)似,比如相機(jī)的傻瓜模式和專(zhuān)家模式,汽車(chē)?yán)锩娴淖詣?dòng)檔和手動(dòng)擋,大同小異python有這么多參數(shù)的傳遞方式,其實(shí)主要了為了軟件設(shè)計(jì)的靈活和功能的擴(kuò)展。

我先從最簡(jiǎn)單的開(kāi)始介紹:

1.位置參數(shù)

python中最普通的函數(shù)使用是這種帶位置參數(shù)的函數(shù),這跟我們其他語(yǔ)言的普通的函數(shù)是一樣的,所有參數(shù)在傳遞的時(shí)候按照位置來(lái)傳遞,列如:

def printmessage(message,times):
print(message*times)

printmessage('hi python:',2) #把“hi python:”賦值給message,2賦值給times

>>># 打印結(jié)果
hi python:hi python:

2.默認(rèn)參數(shù)

一般我們調(diào)用函數(shù)的時(shí)候都會(huì)傳入值,但是有些人比較懶(比如我),希望輸入了值就用我的,那么這個(gè)時(shí)候我就希望不輸入,python也能給我一個(gè)默認(rèn)值,這就用到了默認(rèn)參數(shù)的特性,舉個(gè)栗子,劈個(gè)叉吧:

def printMessage(message,times=2):
print (message*times)

printMessage('Hi Python:') #沒(méi)有輸入times的值
>> #打印結(jié)果
Hi Python:Hi Python:

看我們很懶,沒(méi)有輸入times的值,python就會(huì)自動(dòng)用times的默認(rèn)值2,是不是很爽,你可能以為這有啥了不起的,我一個(gè)一個(gè)輸也行,但是你要考慮一些場(chǎng)景,比如你現(xiàn)在寫(xiě)一個(gè)函數(shù),里面有十幾個(gè)參數(shù),其中有一些參數(shù)是固定的,那是不是可以用默認(rèn)參數(shù)一次性搞定啦~

或者換個(gè)場(chǎng)景,在我們開(kāi)發(fā)產(chǎn)品的時(shí)候,一個(gè)函數(shù)如果有很多參數(shù),但是為了給用戶比較好的體驗(yàn)和方便,我們給函數(shù)提供了一套默認(rèn)的參數(shù),這樣對(duì)用戶來(lái)說(shuō)很爽。

當(dāng)用戶慢慢的對(duì)你的產(chǎn)品熟悉了,他希望自己調(diào)整參數(shù),就可以直接去設(shè)參數(shù),其實(shí)跟照相機(jī)里面的自動(dòng)模式和手調(diào)模式一個(gè)道理。

3.關(guān)鍵字參數(shù)

在調(diào)用函數(shù)的時(shí)候,我們希望傳遞的參數(shù)不是僵硬的通過(guò)位置來(lái)傳遞,能夠有一定的靈活性,能通過(guò)變量名進(jìn)行匹配.

def func(a, b=10, c=20):
print('a is:',a, 'b is:',b, 'c is:',c)
func(3,7) #沒(méi)有關(guān)鍵字就用默認(rèn)的位置傳遞
>>>a is: 3 b is: 7 c is: 20

func(25,c=24) #可以跳過(guò)b,直接賦值給c
>>>a is: 25 b is: 10 c is: 24

func(c=50,a=100) # 用關(guān)鍵字特別爽,想怎么玩就怎么玩,只要你開(kāi)心
>>>a is: 100 b is: 10 c is: 50

4、任意數(shù)量參數(shù)

任意數(shù)量參數(shù)是python關(guān)于函數(shù)參數(shù)傳遞較難的。

先看一個(gè)打印分?jǐn)?shù)的函數(shù),這個(gè)函數(shù)設(shè)計(jì)的比較死板,看python是如何解決的,然后引出我們的話題

def printScore(msg,values):
    if not values:
        print(msg)
    else:
        values_str=', '.join(str(x)for x in values)
        print ('{},{}'.format(msg,values_str))

printScore('My scores are',[100,90])
>>My scores are,100, 90

printScore('My scores are',[ ]) #那怕你不想輸入分?jǐn)?shù),也必須輸入一個(gè)空的列表
>>My scores are

大家仔細(xì)看這個(gè)函數(shù),它是一個(gè)固定參數(shù)個(gè)數(shù)的函數(shù),這個(gè)函數(shù)接受兩個(gè)參數(shù):一個(gè)message,一個(gè)values。

準(zhǔn)確的說(shuō)是必須要接受兩個(gè)參數(shù),這樣就很死板,比如我只需要打印一個(gè)消息,但是調(diào)用的必須要和上面一樣,哪怕你傳入的是一個(gè)空列表。

這種寫(xiě)法既麻煩,又顯的有點(diǎn)亂,有沒(méi)有辦法把第二個(gè)參數(shù)完全省略掉.。有的,python設(shè)計(jì)者(看下圖,就是這哥們,以下鏈接是這個(gè)人的簡(jiǎn)介:https://zh.wikipedia.org/wiki/%E5%90%89%E5%A4%9A%C2%B7%E8%8C%83%E7%BD%97%E8%8B%8F%E5%A7%86設(shè)計(jì)了可變函數(shù)參數(shù)功能,也就是我們的第4種方式。

(1)python有兩種方式聲明可變參數(shù),我們先說(shuō)第一種:

在printScore函數(shù)中,我們做一小丟丟的改動(dòng),我們?cè)趨?shù)values前面加*,變成(msg,*values),表示只有第一個(gè)參數(shù)的msg是調(diào)用者必須要指定的,該參數(shù)后面,可以跟任意數(shù)量的位置參數(shù)(主要是任意數(shù)量,當(dāng)然包含懶人專(zhuān)用的省略不寫(xiě)啦)

def printScore(msg,*values):
if not values:
print (msg)
else:
values_str=', '.join(str(x)for x in values)
print ('{},{}'.format(msg,values_str))

printScore('My scores are')
>>My scores are

是不是很爽,剛才說(shuō)任意數(shù)量,我們加多個(gè)參數(shù)試試看:

printScore('My scores are',100,90,80)
>>My scores are,100, 90, 80

一下把100,90,80都打印出來(lái)呢,是怎么做到的,是因?yàn)?span>python會(huì)自動(dòng)把*操作符后面的形參變成元組傳給函數(shù),是一個(gè)元組哦~

(2)我們接著說(shuō)第二種:如何能接受任意數(shù)量的關(guān)鍵字參數(shù),是用**雙星號(hào)操作符來(lái)表示

def printlog(msg,**therest):
if not therest:
print(msg)
else:
for key,value in therest.items():
print('{},{} = {}'.format(msg,key,value))
printlog('log info',version = '1.0',platfrom = 'win')

>>>
log info,versions = 1.0
log info,platfrom = win

其實(shí)就是把**后面的變量參數(shù),按照字典來(lái)處理,傳遞給函數(shù).

綜合例子:

好,最后拿一個(gè)綜合例子結(jié)尾:(包含了關(guān)鍵字參數(shù),默認(rèn)參數(shù),可變?nèi)我鈹?shù)量參數(shù))

def total(initial=5,*numbers,**keywords):
count=initial
for number in numbers:
count =number

for key in keywords:
count =keywords.get(key)
return count

print total(10,1,2,3,apple=50,orange=100)
>>166
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
5步教你搞清函數(shù)參數(shù)傳遞,就這么簡(jiǎn)單
一日一技:Python中的* args和** kwargs參數(shù)
給妹子講python-S01E21函數(shù)參數(shù)的匹配與解包
教你寫(xiě)出可讀性高的Python代碼
python再談函數(shù)
python基礎(chǔ)篇:什么是函數(shù)?函數(shù)有什么用?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服