Python趣味入門9:函數(shù)的定義

前言

瓊恩·雪諾當(dāng)上守夜人的司令后浸踩,為訓(xùn)練士兵對(duì)付僵尸兵團(tuán)戰(zhàn)肺孵,把斬殺僵尸的系列動(dòng)作編排成了一套劍法惯豆。相似的在計(jì)算機(jī)世界,一系列前后連續(xù)的計(jì)算機(jī)語句組合在一起稱之為函數(shù)跪解,本章主要介紹如何在程序中定義和使用函數(shù)炉旷。

計(jì)算機(jī)語言中的任何概念都是為了更方便的寫代碼

1、函數(shù)的定義

有了函數(shù)后叉讥,當(dāng)要用到相同功能時(shí)窘行,我們就可以重復(fù)地調(diào)用它而不用重寫代碼。下面是瓊恩·雪諾用來上報(bào)戰(zhàn)況的程序图仓,每殺死1鬼罐盔,通信員可以敲kill_dead(),而不用反復(fù)敲print()語句了救崔。

#如下定義了 kill_dead函數(shù)惶看,用來上報(bào)戰(zhàn)況
def kill_dead():
    print('殺死異鬼1頭')

上面的def語句定義了一個(gè)函數(shù)kill_dead,函數(shù)名可以由寫程序的人命名六孵,必須以字母開頭纬黎,后面跟著圓括號(hào),函數(shù)內(nèi)的語句都必須多縮進(jìn)4個(gè)空格劫窒。

2本今、函數(shù)的參數(shù)

例如print()是系統(tǒng)內(nèi)置的函數(shù),要顯示文字時(shí)我們把文字放進(jìn)括號(hào)里,這就是函數(shù)的參數(shù)诈泼。定義函數(shù)時(shí)我們也可以接受參數(shù)懂拾。
在調(diào)用時(shí)分為位置參數(shù)與關(guān)鍵字參數(shù)。

2.1 參數(shù)調(diào)用方式

我們來完善一下這個(gè)戰(zhàn)況通報(bào)程序铐达,把英雄的名字和戰(zhàn)斗業(yè)績(jī)也加上岖赋。

#如下定義了 kill_dead函數(shù),用來上報(bào)戰(zhàn)況
# name: 表示人名變量, number:表示戰(zhàn)績(jī)變量
def kill_dead(name,number):
    print(name,'殺死異鬼',number,'頭') #逗號(hào)分隔參數(shù)顯示

#這是主程序(沒有縮進(jìn))
kill_dead('Snow',2)  #位置參數(shù)調(diào)用
kill_dead(name='Sam',number = 1)    #關(guān)鍵字參數(shù)調(diào)用
kill_dead('Guido',number = 1)    #位置+關(guān)鍵字參數(shù)調(diào)用

運(yùn)行上面的程序會(huì)顯示出如下的結(jié)果:

Snow 殺死異鬼 2 頭
Sam 殺死異鬼 1 頭
Guido 殺死異鬼 1 頭

第1行語句是位置調(diào)用瓮孙,第2行語句是關(guān)鍵字調(diào)用方式唐断,第3行是混合方式。

2.2 參數(shù)的默認(rèn)值

上述播報(bào)戰(zhàn)況的程序中杭抠,我們認(rèn)為number(數(shù)量)每回填上比較麻煩脸甘,因?yàn)?0%的的情況都是1,除了Snow偶爾會(huì)殺死2個(gè)偏灿。這我們就可以使用默認(rèn)值丹诀,而不是每次都填。默認(rèn)值可以使用等號(hào)寫在參數(shù)變量后面翁垂,如下:

#如下定義了 kill_dead函數(shù)铆遭,用來上報(bào)戰(zhàn)況
# name: 表示人名變量, number:表示戰(zhàn)績(jī)變量
def kill_dead(name,number=1):
    print(name,'殺死異鬼',number,'頭') #顯示

#默認(rèn)值不填
kill_dead('小牛叔')

小牛叔殺死了1位,運(yùn)行結(jié)果呢沿猜?

小牛叔 殺死異鬼 1 頭

說明: 有默認(rèn)值的參數(shù)變量枚荣,叫可選參數(shù);沒有默認(rèn)值的參數(shù)啼肩,叫必選參數(shù)橄妆,可選參數(shù)定義時(shí)必須放在右側(cè)。

2.3 參數(shù)的*運(yùn)算和**運(yùn)算

特殊情況出現(xiàn)了祈坠,假設(shè)兵甲害碾、兵乙...兵N同時(shí)殺死了1個(gè)敵人,這時(shí)的參數(shù)數(shù)量不固定怎么辦赦拘?可以使用*運(yùn)算蛮原,把所有的位置參數(shù)“壓縮”成一個(gè)元組變量;此外另绩,還可以使用**運(yùn)算儒陨,把所有的關(guān)鍵字參數(shù)“壓縮”成一個(gè)字典。用法如下:

# *names: 基于位置參數(shù)元組笋籽,表示的人名變量, 
# **killed:基于關(guān)鍵字參數(shù)的字典蹦漠,表示目標(biāo)和數(shù)量
def group_kill(*names,**killed):
    print(names,'殺死',killed['target'],killed['number'],'頭') #顯示

#張王被壓縮成元組存在names,后面被組裝進(jìn)字典killed里。
group_kill('張','王',number=2,target='異龍')

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

('張', '王') 殺死 異龍 2 頭

3车海、函數(shù)的返回值

類似于input()輸入函數(shù)可以返回用戶輸入的字符串結(jié)果笛园,我們定義的函數(shù)也有返回值隘击,返回值使用return語句。

假設(shè)有賞金獵人會(huì)根據(jù)殺敵多少?gòu)氖匾谷四抢镱I(lǐng)取每個(gè)人頭50金幣每個(gè)龍500金幣研铆,計(jì)算2人3龍的賞金的程序這么寫:

def money(dead:int,drag:int)->int:
    return (dead*50 + drag*500)

print('2人3龍的賞金為:',money(2,3))

在本程序里埋同,我們?cè)趨?shù)后使用了:int,函數(shù)后使用了->int棵红,其實(shí)這表示參數(shù)是整數(shù)凶赁,返回值是整數(shù),加了會(huì)使程序更加好理解逆甜,不強(qiáng)制要求添加虱肄。

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

2人3龍的賞金為: 1600

*跟隨小牛叔的腳步,編程入門不掉隊(duì)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末交煞,一起剝皮案震驚了整個(gè)濱河市咏窿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌素征,老刑警劉巖集嵌,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異御毅,居然都是意外死亡纸淮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門亚享,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绘面,你說我怎么就攤上這事欺税。” “怎么了揭璃?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵晚凿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我瘦馍,道長(zhǎng)歼秽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任情组,我火速辦了婚禮燥筷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘院崇。我一直安慰自己肆氓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布底瓣。 她就那樣靜靜地躺著谢揪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拨扶,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天凳鬓,我揣著相機(jī)與錄音,去河邊找鬼患民。 笑死缩举,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的酒奶。 我是一名探鬼主播蚁孔,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼惋嚎!你這毒婦竟也來了杠氢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤另伍,失蹤者是張志新(化名)和其女友劉穎鼻百,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摆尝,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡温艇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了堕汞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勺爱。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖讯检,靈堂內(nèi)的尸體忽然破棺而出琐鲁,到底是詐尸還是另有隱情,我是刑警寧澤人灼,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布围段,位于F島的核電站,受9級(jí)特大地震影響投放,放射性物質(zhì)發(fā)生泄漏奈泪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一灸芳、第九天 我趴在偏房一處隱蔽的房頂上張望涝桅。 院中可真熱鬧,春花似錦烙样、人聲如沸苹支。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽债蜜。三九已至晴埂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寻定,已是汗流浹背儒洛。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狼速,地道東北人琅锻。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像向胡,于是被迫代替她去往敵國(guó)和親恼蓬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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