国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

淺談function(函數(shù))中的動(dòng)態(tài)參數(shù)

2019-11-25 16:12:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

我們可向函數(shù)傳遞動(dòng)態(tài)參數(shù),*args,**kwargs,首先我們來(lái)看*args,示例如下:

1.show(*args)

def show(*args):print(args,type(args))#以元組的形式向列表傳遞參數(shù)show(11,22,33,44,55,66)

首先我們定義了一個(gè)函數(shù),函數(shù)show(*args)里面的*args可以接收動(dòng)態(tài)參數(shù),這里我們接收一個(gè)元組形式的參數(shù),我們可以向show()里面?zhèn)鬟f很多參數(shù),函數(shù)默認(rèn)把這些參數(shù)作為一個(gè)元組進(jìn)行接收。

2.show(**args)

def show(**kwargs):print(kwargs,type(kwargs))#以字典的形式向函數(shù)傳遞參數(shù)show(k1=80,k2="alex")

由上面代碼可以看出,**kwargs是以字典的形式接收參數(shù)的,我們知道,字典是由鍵-值對(duì)組成的,key-value,因而我們必須向里面?zhèn)魅腈I-值對(duì)的參數(shù)形式才能夠接收,因此我們?cè)诶锩鎮(zhèn)魅肓藚?shù)k1=80,k2="alex".這樣生成了一個(gè)字典,從代碼可以看出來(lái)。

3.show(k,*args)

def show(k,*args):
print(k,type(k))
print(args,type(args))
show([11,22],33,44,55,88)

運(yùn)行結(jié)果如下:

[11, 22] <class 'list'>(33, 44, 55, 88) <class 'tuple'>

由上面代碼可以看出,我們向函數(shù)定義了兩個(gè)參數(shù),一個(gè)是k,一個(gè)是*args,我們知道,形參k只能接收一個(gè)對(duì)象參數(shù),*args可以接收多個(gè)參數(shù)并且放在一個(gè)元組中,下面我們向函數(shù)傳遞了多個(gè)參數(shù),看是如何接收的。從運(yùn)行結(jié)果(1)可以看出,形參k接收了參數(shù)[11,22];而后面輸入的值傳遞給了*args,并在存放在一個(gè)列表中。

4.show(*args,**kwargs)

只要函數(shù)有這兩個(gè)參數(shù)那么,可以傳遞任何形式的實(shí)參進(jìn)來(lái),人當(dāng)殺人,佛當(dāng)殺佛,因?yàn)榭梢越邮杖我庑问降膮?shù),但是我們知道,字典必須是由鍵值對(duì)組成,傳遞的參數(shù)要滿足key=value的格式,否則會(huì)報(bào)錯(cuò)。這點(diǎn)一定要記得,Python中默認(rèn)給字典傳遞參數(shù)的方法就是鍵-值對(duì)。

def show(*args,**kwargs):print(args,type(args))print(kwargs,type(kwargs))show(123,"alex",666,alex="sb",nanyang="degnzhou")

運(yùn)行結(jié)果如下:

(123, 'alex', 666) <class 'tuple'>{'nanyang': 'degnzhou', 'alex': 'sb'} <class 'dict'>

我們可以看到,前面的元素被放到了一個(gè)元組tuple中,后面的元素被放到了一個(gè)字典dict中,但是我們一定要記得,*args,一定要在**kwargs前面,不然會(huì)報(bào)錯(cuò),順序一定是單個(gè)參數(shù),動(dòng)態(tài)元組,動(dòng)態(tài)字典方式。

下面我們來(lái)看一個(gè)實(shí)例:

def show(*args,**kwargs):print(args,type(args))print(kwargs,type(kwargs))l = [11,22,33,44]d = {"n1":88,"alex":"sb"}#我們想把列表l傳遞給形參*args,把字典傳遞給形參**kwargs,看下面方式是否可以show(l,d) (1)

#如果向?qū)崿F(xiàn)上面功能,要進(jìn)行表示,指定把哪個(gè)參數(shù)傳遞給形參*args,另一個(gè)參數(shù)傳遞給形參××kwargs

show(*l,**d) (2)

上面代碼中,我們?cè)冢?)處直接調(diào)用參數(shù),但是得到的結(jié)果不是我們想要的,我們想要把參數(shù)以列表或者字典的形式傳給對(duì)應(yīng)的形參,那么必須標(biāo)明是傳遞給哪個(gè)參數(shù)的,相當(dāng)于默認(rèn)參數(shù)一樣。否則只會(huì)傳遞給第一個(gè)參數(shù)*args,把列表和字典都放在同一個(gè)元組中。上面代碼的運(yùn)行結(jié)果如下:

運(yùn)行結(jié)果:

([11, 22, 33, 44], {'alex': 'sb', 'n1': 88}) <class 'tuple'>{} <class 'dict'>(11, 22, 33, 44) <class 'tuple'>{'alex': 'sb', 'n1': 88} <class 'dict'>

5.字符串中參數(shù)的情況

(1)字符串格式化,向字符串中傳遞列表參數(shù)

s1 = "{0} is {1}."result = s1.format("alex","sb")(1)l = ["alex","sb"] (2)res = s1.format(*l)print(result)print(res)

上面,我們有兩種向字符串傳遞參數(shù)的方法,方法(1)中我們直接按順序傳遞參數(shù)給s1,在方法(2)中我們指定一個(gè)列表,但是使用*args的形式給字符串s1傳遞參數(shù)。列表是有序的。

(2)向字符串中傳遞字典形式的參數(shù)

s1 = "{name} is {acter}."result = s1.format(name="alex",acter="sb")d = {"name":"alex","acter":"sb"}#向列表中傳遞字典形式的參數(shù)res = s1.format(**d)print(result)print(res)

在上面代碼中,我們向字符串中傳遞了一個(gè)字典形式的參數(shù),我們知道字典的格式,在傳遞給字符串的時(shí)候要指定我們傳遞的參數(shù)是一個(gè)字典,

因而要使用**d格式,告訴Python。

6.lambda表達(dá)式

lambda簡(jiǎn)單表達(dá)式就是函數(shù)的簡(jiǎn)單表示形式:

>>> func = lambda a:a+1  >>> ret = func(99)  >>> print(ret)  100

在上面形式中,func是定義一個(gè)函數(shù),lambda表示的是我們定義了一個(gè)lambad表達(dá)式,其中a代表的形參,冒號(hào)(:)后面的a+1代表表達(dá)式,對(duì)

函數(shù)進(jìn)行什么樣的處理,然后把結(jié)果返回給ret這個(gè)變量,調(diào)用它的變量。省略了return。

上面形式參數(shù)可以有多個(gè),冒號(hào)前面是參數(shù),可以多個(gè);冒號(hào)后面是函數(shù)體。

lambda表達(dá)式創(chuàng)建了形參a;函數(shù)內(nèi)容a+1,并把結(jié)果返回給調(diào)用函數(shù)的變量。

以上這篇淺談function(函數(shù))中的動(dòng)態(tài)參數(shù)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 岳阳市| 封丘县| 山西省| 东至县| 玛纳斯县| 浪卡子县| 香格里拉县| 邢台市| 太保市| 连平县| 麟游县| 苏州市| 商丘市| 凤山县| 延安市| 东台市| 霍州市| 右玉县| 长沙县| 佛学| 元谋县| 公安县| 余姚市| 拜泉县| 金塔县| 武夷山市| 报价| 无锡市| 安乡县| 临高县| 五台县| 同仁县| 麦盖提县| 若尔盖县| 阿拉善盟| 本溪| 海安县| 寻乌县| 洛川县| 鄂温| 轮台县|