成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[零基礎學python]總結參數(shù)的傳遞

vibiu / 468人閱讀

摘要:下面總結通過總結常見的函數(shù)參數(shù)定義方式,來理解參數(shù)傳遞的流程。這種方式最常見了,列出有限個數(shù)的參數(shù),并且彼此之間用逗號隔開。而且,必須數(shù)量一致,一一對應。

就前面所講,函數(shù)的基本內容已經完畢。但是,函數(shù)還有很多值得不斷玩味的細節(jié)。這里進行闡述。

參數(shù)的傳遞

python中函數(shù)的參數(shù)通過賦值的方式來傳遞引用對象。下面總結通過總結常見的函數(shù)參數(shù)定義方式,來理解參數(shù)傳遞的流程。

def foo(p1,p2,p3,...)

這種方式最常見了,列出有限個數(shù)的參數(shù),并且彼此之間用逗號隔開。在調用函數(shù)的時候,按照順序以此對參數(shù)進行賦值,特備注意的是,參數(shù)的名字不重要,重要的是位置。而且,必須數(shù)量一致,一一對應。第一個對象(可能是數(shù)值、字符串等等)對應第一個參數(shù),第二個對應第二個參數(shù),如此對應,不得偏左也不得偏右。

>>> def foo(p1,p2,p3):
...     print "p1==>",p1
...     print "p2==>",p2
...     print "p3==>",p3
... 
>>> foo("python",1,["qiwsir","github","io"])    #一一對應地賦值
p1==> python
p2==> 1
p3==> ["qiwsir", "github", "io"]

>>> foo("python")
Traceback (most recent call last):
  File "", line 1, in 
TypeError: foo() takes exactly 3 arguments (1 given)    #注意看報錯信息

>>> foo("python",1,2,3)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: foo() takes exactly 3 arguments (4 given)    #要求3個參數(shù),實際上放置了4個,報錯
def foo(p1=value1,p2=value2,...)

這種方式比前面一種更明確某個參數(shù)的賦值,貌似這樣就不亂子了,很明確呀。頗有一個蘿卜對著一個坑的意味。

還是上面那個函數(shù),用下面的方式賦值,就不用擔心順序問題了。

>>> foo(p3=3,p1=10,p2=222)
p1==> 10
p2==> 222
p3==> 3

也可以采用下面的方式定義參數(shù),給某些參數(shù)有默認的值

>>> def foo(p1,p2=22,p3=33):    #設置了兩個參數(shù)p2,p3的默認值
...     print "p1==>",p1
...     print "p2==>",p2
...     print "p3==>",p3
... 
>>> foo(11)     #p1=11,其它的參數(shù)為默認賦值
p1==> 11
p2==> 22
p3==> 33
>>> foo(11,222)     #按照順序,p2=222,p3依舊維持原默認值
p1==> 11
p2==> 222
p3==> 33
>>> foo(11,222,333)  #按順序賦值
p1==> 11
p2==> 222
p3==> 333

>>> foo(11,p2=122)
p1==> 11
p2==> 122
p3==> 33

>>> foo(p2=122)     #p1沒有默認值,必須要賦值的,否則報錯
Traceback (most recent call last):
  File "", line 1, in 
TypeError: foo() takes at least 1 argument (1 given)
def foo(*args)

這種方式適合于不確定參數(shù)個數(shù)的時候,在參數(shù)args前面加一個*,注意,僅一個喲。

>>> def foo(*args):         #接收不確定個數(shù)的數(shù)據(jù)對象
...     print args
... 
>>> foo("qiwsir.github.io") #以tuple形式接收到,哪怕是一個
("qiwsir.github.io",)
>>> foo("qiwsir.github.io","python")
("qiwsir.github.io", "python")

上一講中已經有例子說明,可以和前面的混合使用。此處不贅述。

def foo(**args)

這種方式跟上面的區(qū)別在于,必須接收類似arg=val形式的。

>>> def foo(**args):    #這種方式接收,以dictionary的形式接收數(shù)據(jù)對象
...     print args
... 

>>> foo(1,2,3)          #這樣就報錯了
Traceback (most recent call last):
  File "", line 1, in 
TypeError: foo() takes exactly 0 arguments (3 given)

>>> foo(a=1,b=2,c=3)    #這樣就可以了,因為有了鍵值對
{"a": 1, "c": 3, "b": 2}

下面來一個綜合的,看看以上四種參數(shù)傳遞方法的執(zhí)行順序

>>> def foo(x,y=2,*targs,**dargs):
...     print "x==>",x
...     print "y==>",y
...     print "targs_tuple==>",targs
...     print "dargs_dict==>",dargs
... 

>>> foo("1x")
x==> 1x
y==> 2
targs_tuple==> ()
dargs_dict==> {}

>>> foo("1x","2y")
x==> 1x
y==> 2y
targs_tuple==> ()
dargs_dict==> {}

>>> foo("1x","2y","3t1","3t2")
x==> 1x
y==> 2y
targs_tuple==> ("3t1", "3t2")
dargs_dict==> {}

>>> foo("1x","2y","3t1","3t2",d1="4d1",d2="4d2")
x==> 1x
y==> 2y
targs_tuple==> ("3t1", "3t2")
dargs_dict==> {"d2": "4d2", "d1": "4d1"}

通過上面的例子,看官是否看出什么名堂了呢?

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/45301.html

相關文章

  • [基礎python]變量和參數(shù)

    摘要:每個形參的名稱均可作為過程內的局部變量。實參表示在您調用過程時傳遞給過程形參的值??垂偃绻仓^皮看完這段引文,發(fā)現(xiàn)里面有幾個關鍵詞參數(shù)變量形參實參。好似全局變量能力很強悍,能夠統(tǒng)帥函數(shù)內外。 對于變量和參數(shù),不管是已經敲代碼多年的老鳥,還是剛剛接觸編程的小白,都會有時候清楚,有時候又有點模糊。因為,在實際應用中,它們之間分分離離,比如,敲代碼都知道,x=3中x是變量,它不是參數(shù),但是...

    Freelander 評論0 收藏0
  • [基礎python]傳說中函數(shù)編寫條規(guī)

    摘要:關于函數(shù)的事情,總是說不完的,下面就羅列一些編寫函數(shù)的注意事項。函數(shù)具有獨立性。也就是常說的不要有太強的耦合性。要讓函數(shù)能夠獨立于外部的東西。函數(shù)實現(xiàn)的功能和目標要單一化。這跟前面的道理是一樣的,目的是降低耦合性。 關于函數(shù)的事情,總是說不完的,下面就羅列一些編寫函數(shù)的注意事項。特別聲明,這些事項不是我總結的,我是從一本名字為《Learning Python》的書里面抄過來的,順便寫成...

    mushang 評論0 收藏0
  • [基礎python]探析get和post方法

    摘要:特別提醒,看官不要自宮,因為本教程不是辟邪劍譜,也不是葵花寶典,撰寫本課程的人更是生理健全者。直到目前,科學上尚未有證實或證偽自宮和寫程序之間是否存在某種因果關系。和是中用的最多的方法啦。 Do not store up for yourselves treasures on earth, where moth and rust consume and where thieves...

    AaronYuan 評論0 收藏0
  • python基礎教程:字符串格式化

    摘要:字符串格式化的字符串字面值簡稱為字符串,是在字符串的開始引號之前加上一個或。在這樣的字符串中,我們可以在花括號中引用變量或表達式。但在中,更推薦使用方法或字符串格式化。 利用print函數(shù)把信息打印到顯示器,是我們編程中經常使用的功能。為了讓打印的信息更容易讀懂,就需要更好的格式來打印。Python提供了記住不同的格式化輸出的方法。推薦的方法就是:f-字符串和str.format()函...

    alin 評論0 收藏0
  • [基礎python]類細節(jié)

    摘要:在對象接口后包裝其實現(xiàn)的細節(jié),從而隔離了代碼的修改對用戶產生的影響。類提供了一個新的本地作用域,最小化了變量名沖突。類其實并沒有結束,不過本講座到此對類暫告一段。 前面對類的有關內容已經描述不少了,其實話題遠遠沒有結束,不過對于初學者,掌握這些已經算是入門,在以后的實踐中,還需要進行體會和感悟。 這幾天和幾個朋友以各種途徑討論過OOP的相關問題,他們是:令狐蟲、Frank、晉劍、小馮...

    Fundebug 評論0 收藏0

發(fā)表評論

0條評論

vibiu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<