Python學(xué)習(xí)筆記-Day06(二)

Python學(xué)習(xí)筆記

Day_06-函數(shù)(二)

上節(jié)學(xué)習(xí)了函數(shù)的一些基本知識和用法。這一節(jié)繼續(xù)學(xué)習(xí)函數(shù)參數(shù)的傳遞方面的知識彻舰。

6.1 基本傳參

1、位置(position)傳參

首先我來定義一個函數(shù),說明一下位置傳參的意思束莫。

例:

"""
python學(xué)習(xí)筆記-day06
函數(shù)的一些知識及用法髓废。

version:0.2
author:chris
公眾號:穎川河
"""


def num_plus(a, b, c):
    """calculate the sum of a , b and c """
    d = a + b + c
    print(a, b, c)
    return d


print(num_plus(11, 12, 22))
print(num_plus(22, 11, 12))
print(num_plus(12, 22, 11))

輸出結(jié)果如下:

11 12 22
45
22 11 12
45
12 22 11
45

從上述例題中可以看出巷懈,參數(shù)是按照定義函數(shù)時的形參的順序被調(diào)用的,雖然結(jié)果一樣慌洪,但是參數(shù)的位置或者所對應(yīng)的實參事不一致的顶燕。

2、關(guān)鍵字(Keyword)傳參

關(guān)鍵字傳參的意思是冈爹,在單數(shù)調(diào)用的時候涌攻,將形參作為傳參的關(guān)鍵字,這樣雖然實參的順序發(fā)生變化频伤,也不影響實參的值恳谎。還是用上面的例子說明一下:

def num_plus(a, b, c):
    """calculate the sum of a and b """
    d = a + b + c
    print(a, b, c)
    return d


print(num_plus(11, c=12, b=22))
print(num_plus(b=22, a=11, c=12))
print(num_plus(b=12, a=22, c=11))

輸出結(jié)果如下:

11 22 12
45
11 22 12
45
22 12 11
45

上面的例子中可以看出,函數(shù)調(diào)用過程中傳參的時候憋肖,我門指定了關(guān)鍵字因痛,那么在函數(shù)調(diào)用進(jìn)行計算的時候,就嚴(yán)格按照關(guān)鍵字進(jìn)行計算岸更,而且鸵膏,以第二個print(num_plus(b=22, a=11, c=12))為例可以看出,指定關(guān)鍵字后實參的順序是可以打亂的怎炊。但是较性,需要注意的是,如果位置傳參和關(guān)鍵字傳參同時使用的時候结胀,第一個位置的實參必須是位置傳參赞咙,就像print(num_plus(11, c=12, b=22))是正確的,而如果換成print(num_plus(a=11, 12, b=22))就會報錯糟港,提示你在一個位置參數(shù)前面出現(xiàn)了關(guān)鍵字參數(shù)攀操。

6.2 包裹(packing)傳參

這種傳參的說法是我看Vamei大神說的,菜鳥教程中的說法是不定長傳參秸抚。暫且先按照Vamei大神的說法速和。

上面的傳參方式要求在定義函數(shù)的時候定義參數(shù)的個數(shù)歹垫,但是實際應(yīng)用的過程中,往往不需要確定參數(shù)的個數(shù)颠放。這個時候就需呀用到包裹(packing)傳參的方式排惨。

同基本傳參,包裹傳參也包括位置傳參和關(guān)鍵字傳參碰凶。

1暮芭、位置傳參

還是以一個例子來說明,代碼如下:

def pack_position(*numbers):
    print(type(numbers))
    print(numbers)


print(pack_position(1, 4, 9))
print(pack_position(1, 6, 3, 5, 7, 8))

輸出結(jié)果如下:

<class 'tuple'>
(1, 4, 9)
None
<class 'tuple'>
(1, 6, 3, 5, 7, 8)
None

從結(jié)果中我們可以看到欲低,定義函數(shù)時辕宏,通過在形參前面加*,就可以定義一個長度可變的參數(shù)砾莱。函數(shù)調(diào)用的時候瑞筐,可以給定不同長度或者不同個數(shù)的實參,輸出后會將這些實參包裹進(jìn)一個元組中腊瑟。

2聚假、關(guān)鍵字傳參

同理,包裹傳參中也有關(guān)鍵字傳參闰非。它的用法時在定義函數(shù)時的形參前面加兩個*來實現(xiàn)魔策。

代碼如下:

def pack_keyword(**numbers):
    print(type(numbers))
    print(numbers)


print(pack_keyword(a=12, b=2))
print(pack_keyword(a=1, b=4, c=6, d=17))

輸出結(jié)果如下:

<class 'dict'>
{'a': 12, 'b': 2}
None
<class 'dict'>
{'a': 1, 'b': 4, 'c': 6, 'd': 17}
None

唉,這就看出來區(qū)別了河胎。定義函數(shù)的時候闯袒,在形參前加**,就是告訴函數(shù)游岳,這是一個個數(shù)不定的形參政敢,函數(shù)調(diào)用的時候,需要通過關(guān)鍵詞來調(diào)用胚迫。調(diào)用后喷户,函數(shù)會將實參包裹進(jìn)一個dict,關(guān)鍵詞是鍵key访锻,數(shù)值就是值value褪尝。

6.3 混合傳參

python中規(guī)定,函數(shù)定義的時候期犬,不同類型的形參可以混合使用河哑,即可以將位置、關(guān)鍵字龟虎、包裹位置璃谨、包裹關(guān)鍵字混合使用。

例如:

def mix_argument(a, b, *position, **keyword):
    print(a, b)
    print(position)
    print(keyword)


print(mix_argument(1, 2, 4, 6, 8, d=9, e=11, f=22))

輸出結(jié)果如下:

1 2
(4, 6, 8)
{'d': 9, 'e': 11, 'f': 22}

需要注意的是,當(dāng)進(jìn)行混合傳參的時候佳吞,必須嚴(yán)格按照位置-關(guān)鍵字-包裹位置-包裹關(guān)鍵字的順序拱雏,否則程序會報錯。

6.4 小結(jié)

本次學(xué)習(xí)了函數(shù)參數(shù)的傳遞和調(diào)用底扳,接下來我將學(xué)習(xí)匿名函數(shù)lambda的用法铸抑。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市衷模,隨后出現(xiàn)的幾起案子鹊汛,更是在濱河造成了極大的恐慌,老刑警劉巖算芯,帶你破解...
    沈念sama閱讀 211,496評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凳宙,居然都是意外死亡熙揍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評論 3 385
  • 文/潘曉璐 我一進(jìn)店門氏涩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來届囚,“玉大人,你說我怎么就攤上這事是尖∫庀担” “怎么了?”我有些...
    開封第一講書人閱讀 157,091評論 0 348
  • 文/不壞的土叔 我叫張陵饺汹,是天一觀的道長蛔添。 經(jīng)常有香客問我,道長兜辞,這世上最難降的妖魔是什么迎瞧? 我笑而不...
    開封第一講書人閱讀 56,458評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮逸吵,結(jié)果婚禮上凶硅,老公的妹妹穿的比我還像新娘。我一直安慰自己扫皱,他們只是感情好足绅,可當(dāng)我...
    茶點故事閱讀 65,542評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著韩脑,像睡著了一般氢妈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上段多,一...
    開封第一講書人閱讀 49,802評論 1 290
  • 那天允懂,我揣著相機(jī)與錄音,去河邊找鬼衩匣。 笑死蕾总,一個胖子當(dāng)著我的面吹牛粥航,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播生百,決...
    沈念sama閱讀 38,945評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼递雀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蚀浆?” 一聲冷哼從身側(cè)響起缀程,我...
    開封第一講書人閱讀 37,709評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎市俊,沒想到半個月后杨凑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,158評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡摆昧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,502評論 2 327
  • 正文 我和宋清朗相戀三年撩满,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绅你。...
    茶點故事閱讀 38,637評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡伺帘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出忌锯,到底是詐尸還是另有隱情伪嫁,我是刑警寧澤,帶...
    沈念sama閱讀 34,300評論 4 329
  • 正文 年R本政府宣布偶垮,位于F島的核電站张咳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏似舵。R本人自食惡果不足惜晶伦,卻給世界環(huán)境...
    茶點故事閱讀 39,911評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啄枕。 院中可真熱鬧婚陪,春花似錦、人聲如沸频祝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽常空。三九已至沽一,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漓糙,已是汗流浹背铣缠。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蝗蛙。 一個月前我還...
    沈念sama閱讀 46,344評論 2 360
  • 正文 我出身青樓蝇庭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捡硅。 傳聞我的和親對象是個殘疾皇子哮内,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,500評論 2 348

推薦閱讀更多精彩內(nèi)容