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

首頁 > 編程 > Python > 正文

python下函數(shù)參數(shù)的傳遞(參數(shù)帶星號的說明)

2020-02-23 04:45:47
字體:
供稿:網(wǎng)友
函數(shù)參數(shù)的使用又有倆個方面值得注意:
1.函數(shù)參數(shù)是如何定義的
2.在調(diào)用函數(shù)的過程中參數(shù)是如何被解析

先看第一個問題,在python中函數(shù)參數(shù)的定義主要有四種方式:
1.F(arg1,arg2,...)
這 是最常見的定義方式,一個函數(shù)可以定義任意個參數(shù),每個參數(shù)間用逗號分割,用這種方式定義的函數(shù)在調(diào)用的的時候也必須在函數(shù)名后的小括號里提供個數(shù)相等的 值(實(shí)際參數(shù)),而且順序必須相同,也就是說在這種調(diào)用方式中,形參和實(shí)參的個數(shù)必須一致,而且必須一一對應(yīng),也就是說第一個形參對應(yīng)這第一個實(shí)參。例 如:
def a(x,y):
print x,y
調(diào)用該函數(shù),a(1,2)則x取1,y取2,形參與實(shí)參相對應(yīng),如果a(1)或者a(1,2,3)則會報錯。


2.F(arg1,arg2=value2,...)
這種方式就是第一種的改進(jìn)版,提供了默認(rèn)值
def a(x,y=3):
print x,y
調(diào)用該函數(shù),a(1,2)同樣還是x取1,y取2,但是如果a(1),則不會報錯了,這個時候x還是1,y則為默認(rèn)的3。上面這倆種方式,還可以更換參數(shù)位置,比如a(y=8,x=3)用這種形式也是可以的。


3.F(*arg1)
上 面?zhèn)z個方式是有多少個形參,就傳進(jìn)去多少個實(shí)參,但有時候會不確定有多少個參數(shù),則此時第三種方式就比較有用,它以一個*加上形參名的方式來表示這個函數(shù) 的實(shí)參個數(shù)不定,可能為0個也可能為n個。注意一點(diǎn)是,不管有多少個,在函數(shù)內(nèi)部都被存放在以形參名為標(biāo)識符的tuple中。
>>> def a(*x):
if len(x)==0:
print 'None'
else:
print x
>>> a(1)
(1,) #存放在元組中
>>> a()
None
>>> a(1,2,3)
(1, 2, 3)
>>> a(m=1,y=2,z=3)

Traceback (most recent call last):
File "<pyshell#16>", line 1, in -toplevel-
a(m=1,y=2,z=3)
TypeError: a() got an unexpected keyword argument 'm'


4.F(**arg1)
形參名前加倆個*表示,參數(shù)在函數(shù)內(nèi)部將被存放在以形式名為標(biāo)識符的dictionary中,這時調(diào)用函數(shù)的方法則需要采用arg1=value1,arg2=value2這樣的形式。
>>> def a(**x):
if len(x)==0:
print 'None'
else:
print x
>>> a()
None
>>> a(x=1,y=2)
{'y': 2, 'x': 1} #存放在字典中
>>> a(1,2) #這種調(diào)用則報錯

Traceback (most recent call last):
File "<pyshell#25>", line 1, in -toplevel-
a(1,2)
TypeError: a() takes exactly 0 arguments (2 given)


上面介紹了四種定義方式,接下來看函數(shù)參數(shù)在調(diào)用過程中是怎么被解析的,其實(shí)只要記住上面這四種方法優(yōu)先級依次降低,先1,后2,再3,最后4,也就是先把方式1中的arg解析,然后解析方式2中的arg=value,再解析方式3,即是把多出來的arg這種形式的實(shí)參組成個tuple傳進(jìn)去,最后把剩下的key=value這種形式的實(shí)參組成一個dictionary傳給帶倆個星號的形參,也就方式4。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阿拉善左旗| 周宁县| 图片| 千阳县| 武宁县| 西盟| 阿合奇县| 雅江县| 漳浦县| 海淀区| 南华县| 偃师市| 丘北县| 丹凤县| 灌云县| 长治市| 马鞍山市| 南宫市| 田东县| 新宁县| 福贡县| 贵阳市| 东宁县| 安阳县| 手游| 宝山区| 托里县| 潮安县| 合江县| 贡嘎县| 昔阳县| 英山县| 无为县| 灵丘县| 石阡县| 安义县| 昌宁县| 南木林县| 兴安县| 沙湾县| 江城|