2018-11-28

多類(lèi)型傳值和冗余參數(shù)

  1. 多類(lèi)型傳參
In [1]: def fun(x, y):
   ...:     return x + y
   ...:

In [2]: fun(1, 5)
Out[2]: 6

In [3]: t = (1, 5)

In [4]: fun(t)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-21f7b4b850d7> in <module>()
----> 1 fun(t)

TypeError: fun() takes exactly 2 arguments (1 given)

In [5]: fun(*t)
Out[5]: 6

In [6]: w = [1, 5]

In [7]: fun(*w)
Out[7]: 6
In [8]: def sum(x, y, z):
   ...:     return x + y + z
   ...:

In [9]: sum(10, *t)
Out[9]: 16

In [10]: sum(10, *w)
Out[10]: 16

In [11]: sum(*t, 10)
  File "<ipython-input-11-ccfcd859f3aa>", line 1
    sum(*t, 10)
SyntaxError: only named arguments may follow *expression


In [12]: sum(*(10, 1, 5))
Out[12]: 16

In [13]: sum(*[10, 1, 5])
Out[13]: 16

In [20]: dic = {'x':1, 'y':3, 'z':5}

In [21]: sum(**dic)
Out[21]: 9
  1. 冗余參數(shù)
  • 向函數(shù)傳元組和字典
  • 處理多余實(shí)參
  • def fun(x, y, *args, **kwargs)
In [15]: def fun(x, *args, **kwargs):
    ...:     print x
    ...:     print args
    ...:     print kwargs
    ...:

In [16]: fun()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-16-d9f830ba61f1> in <module>()
----> 1 fun()

TypeError: fun() takes at least 1 argument (0 given)

In [17]: fun(3)
3
()
{}

In [18]: fun('a')
a
()
{}

In [27]: fun('a', 2, ['b', 3])
a
(2, ['b', 3])
{}

In [28]: fun([1, 2], 'a', 2, ['b', 3])
[1, 2]
('a', 2, ['b', 3])
{}

In [29]: dic
Out[29]: {'x': 1, 'y': 3, 'z': 5}

In [30]: fun(dic, ['a', ('b', 3), 5], ('x', 2), 9)
{'y': 3, 'x': 1, 'z': 5}
(['a', ('b', 3), 5], ('x', 2), 9)
{}

In [31]: dic2 = {'a':6, 'b':7, 'c':8}

In [32]: fun(dic, dic2)
{'y': 3, 'x': 1, 'z': 5}
({'a': 6, 'c': 8, 'b': 7},)
{}

In [39]: fun(dic, **dic2)
{'y': 3, 'x': 1, 'z': 5}
()
{'a': 6, 'c': 8, 'b': 7}

In [42]: fun(dic, dic, *t, *w, **dic2)
  File "<ipython-input-42-ea2cb6c1864b>", line 1
    fun(dic, dic, *t, *w, **dic2)
                      ^
SyntaxError: invalid syntax


In [43]: fun(dic, dic, *t, **dic2)
{'y': 3, 'x': 1, 'z': 5}
({'y': 3, 'x': 1, 'z': 5}, 1, 5)
{'a': 6, 'c': 8, 'b': 7}

In [44]: fun(1, 'a', [1, 2], *t, g=6, j=8, **dic2)
1
('a', [1, 2], 1, 5)
{'a': 6, 'c': 8, 'b': 7, 'g': 6, 'j': 8}

函數(shù)的遞歸調(diào)用

  • 必須有最后的默認(rèn)結(jié)果,如 if n == 0
  • 遞歸參數(shù)必須向默認(rèn)結(jié)果收斂阳掐,如 factorial(n-1)
# 1) 使用循環(huán)實(shí)現(xiàn)階乘函數(shù)

In [45]: def factorial(n):
    ...:     f = 1
    ...:     for i in range(1, n+1):
    ...:         f *= i
    ...:     return f
    ...:

In [46]: factorial(4)
Out[46]: 24
# 2) 使用遞歸實(shí)現(xiàn)階乘函數(shù)

In [47]: def factorial(n):
    ...:     if n == 0:
    ...:         return 1
    ...:     else:
    ...:         return n * factorial(n-1)
    ...:

In [48]: factorial(4)
Out[48]: 24
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末匾二,一起剝皮案震驚了整個(gè)濱河市诸迟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乐导,老刑警劉巖辆影,帶你破解...
    沈念sama閱讀 223,126評(píng)論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異张足,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)坎藐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén)为牍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人岩馍,你說(shuō)我怎么就攤上這事碉咆。” “怎么了蛀恩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,941評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵疫铜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我双谆,道長(zhǎng)壳咕,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,294評(píng)論 1 300
  • 正文 為了忘掉前任顽馋,我火速辦了婚禮谓厘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寸谜。我一直安慰自己竟稳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著住练,像睡著了一般地啰。 火紅的嫁衣襯著肌膚如雪愁拭。 梳的紋絲不亂的頭發(fā)上讲逛,一...
    開(kāi)封第一講書(shū)人閱讀 52,874評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音岭埠,去河邊找鬼盏混。 笑死,一個(gè)胖子當(dāng)著我的面吹牛惜论,可吹牛的內(nèi)容都是我干的许赃。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼馆类,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼混聊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起乾巧,我...
    開(kāi)封第一講書(shū)人閱讀 40,249評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤句喜,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后沟于,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體咳胃,經(jīng)...
    沈念sama閱讀 46,760評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評(píng)論 3 343
  • 正文 我和宋清朗相戀三年旷太,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了展懈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,973評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡供璧,死狀恐怖存崖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情睡毒,我是刑警寧澤来惧,帶...
    沈念sama閱讀 36,631評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站吕嘀,受9級(jí)特大地震影響违寞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜偶房,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評(píng)論 3 336
  • 文/蒙蒙 一趁曼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棕洋,春花似錦挡闰、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,797評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赞季。三九已至,卻和暖如春奢驯,著一層夾襖步出監(jiān)牢的瞬間申钩,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,926評(píng)論 1 275
  • 我被黑心中介騙來(lái)泰國(guó)打工瘪阁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撒遣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,431評(píng)論 3 379
  • 正文 我出身青樓管跺,卻偏偏與公主長(zhǎng)得像义黎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子豁跑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評(píng)論 2 361

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