20180629_函數(shù)參數(shù)

4. 四、函數(shù)

4.1. 定義

函數(shù)是指將一組語(yǔ)句的集合通過(guò)一個(gè)名字(函數(shù)名)封裝起來(lái),要想執(zhí)行這個(gè)函數(shù),只需要調(diào)用其函數(shù)名即可及舍。

4.2. 特性

  • 減少重復(fù)代碼
  • 使程序變的可擴(kuò)展
  • 使程序易于維護(hù)

4.3. 默認(rèn)參數(shù)

定義函數(shù)時(shí),給形參賦值窟绷,這個(gè)值就是默認(rèn)參數(shù)。在調(diào)用函數(shù)時(shí)咐柜,如果不填寫該參數(shù)兼蜈,表示使用默認(rèn)參數(shù)。定義函數(shù)時(shí)拙友,默認(rèn)參數(shù)應(yīng)該在位置參數(shù)的后面为狸。

4.4. 形參和實(shí)參

顧名思義,形參指形式參數(shù)遗契,實(shí)參指實(shí)際參數(shù)辐棒。形參是定義函數(shù)時(shí),類似于用于占位的參數(shù)牍蜂,它占領(lǐng)的這個(gè)位置用于調(diào)用時(shí)漾根,給實(shí)參放進(jìn)程序里用。

4.5. 位置參數(shù)和關(guān)鍵參數(shù)

定義函數(shù)時(shí)候鲫竞,理論上可以有無(wú)限多個(gè)參數(shù)辐怕。默認(rèn)情況下,這些參數(shù)按0~x從左往右編號(hào)从绘,每個(gè)位置上的參數(shù)都有一個(gè)編號(hào)寄疏,這種通過(guò)編號(hào)確定位置的參數(shù)叫做位置參數(shù)。因此僵井,調(diào)用函數(shù)時(shí)陕截,每個(gè)位置的參數(shù)是有序的。如果調(diào)用時(shí)批什,想隨意放置參數(shù)农曲,就需要使用關(guān)鍵參數(shù)

因?yàn)檎{(diào)用函數(shù)時(shí)渊季,用類似于字典中鍵值對(duì)映射關(guān)系那種方法制定了對(duì)應(yīng)形參的實(shí)參朋蔫,因此程序不會(huì)出錯(cuò)。

del fuc1(name, age, sex, countyr = 'CN'):
    return name, age, country, sex

fuc1('Alex', sex = 'man', age = 28)

在上述代碼中却汉,name驯妄、agesex是位置參數(shù)合砂,三者之間從左往右一次排序青扔,在調(diào)用時(shí),三個(gè)實(shí)參依次表示name、age微猖、sex谈息。比如fuc1('Alex', 21, 'man')如果使用關(guān)鍵參數(shù),比如第二個(gè)參數(shù)寫sex = 'man'凛剥,程序輸出時(shí)侠仇,依然會(huì)按照name、age犁珠、country和sex的順序輸出逻炊。

4.6. 可變參數(shù)

定義函數(shù)時(shí),在參數(shù)前面加一個(gè)*犁享,表示這個(gè)參數(shù)為可變參數(shù)余素。可變參數(shù)炊昆,顧名思義桨吊,這個(gè)參數(shù)代表的參數(shù)個(gè)數(shù)是可變的。事實(shí)上凤巨,函數(shù)是將這些所有參數(shù)打包成一個(gè)元祖?zhèn)鹘o帶星的這個(gè)參數(shù)视乐。

那么問(wèn)題來(lái)了,我們也可以自己打包成一個(gè)列表或者元祖?zhèn)鹘o可變參數(shù)磅甩。但是要注意炊林,如果僅僅是寫一個(gè)列表或者元祖,可變參數(shù)會(huì)將這個(gè)列表或者元祖整體作為一個(gè)參數(shù)卷要。因此渣聚,我們自行打包時(shí),需要加一個(gè)*僧叉,表示我們將列表或者元祖中的元素打包后傳給可變參數(shù)奕枝。

del fuc1(course, *name)
    reture course, name

fuc1('Python3', 'Alex', 'shanshan', 'black girl') # 'Alex'到'black girl'都是可變參數(shù)中的元素。

fuc1('Python3', *['Alex', 'shanshan', 'black girl']) # 自行打包可變參數(shù)

因?yàn)榭勺儏?shù)的參數(shù)可數(shù)是不固定的瓶堕,因此在調(diào)用函數(shù)時(shí)需要注意撰寫其后面的參數(shù)時(shí)需要使用關(guān)鍵參數(shù)的形式隘道。

del fuc1(course, *name, age)
    print('課程為:', course, *name, age)

fuc1('Python3', 'Alex', 21) # 這種寫法會(huì)報(bào)錯(cuò)郎笆,因?yàn)镻ython會(huì)錯(cuò)誤的將`'Alex'`和`21`當(dāng)成可變參數(shù)谭梗,因此缺少一個(gè)參數(shù)`age`。正確的寫法應(yīng)該是:

fuc1('Python3', 'Alex', age = 21)

一個(gè)*表示元祖宛蚓,兩個(gè)**表示字典激捏。用于添加未定義的參數(shù)。

del fuc1(name, *args, **kwargs)
    print(name, args, kwargs)  # 注意凄吏,這里打印參數(shù)時(shí)远舅,不需要添加`*`

fuc1('Alex', 21, '51w', age = 21, school = 'luffy')

4.7. 局部變量和全局變量

函數(shù)中局部變量的作用域只在函數(shù)內(nèi)闰蛔,函數(shù)外的全局變量作用域在整個(gè)程序內(nèi)。因此函數(shù)外不能使用函數(shù)內(nèi)的變量图柏,但是函數(shù)內(nèi)可以使用函數(shù)外的變量序六,但是不能修改函數(shù)外的變量。否則Python會(huì)自動(dòng)在函數(shù)內(nèi)生成一個(gè)與要修改的全局函數(shù)變量相同變量名的局部變量蚤吹。如果確實(shí)像在函數(shù)內(nèi)修改全局變量例诀,需要在函數(shù)內(nèi)對(duì)需要修改的全局變量進(jìn)行生命golbal 函數(shù)變量名

4.8. 內(nèi)嵌函數(shù)和閉包

函數(shù)支持嵌套裁着。即定義函數(shù)時(shí)余佃,在定義的函數(shù)內(nèi)部可以再定義函數(shù)。比如:

del fuc1():
    print('調(diào)用第一個(gè)函數(shù)')
    del fuc2():
        print('調(diào)用第二個(gè)函數(shù)')
    fuc2()

因?yàn)楹瘮?shù)fuc2是在fuc1中定義的跨算,因此,在函數(shù)fuc1中可以任意調(diào)用函數(shù)fuc2椭懊,而在函數(shù)fuc1外诸蚕,則不能調(diào)用函數(shù)fuc2

4.9. 返回值

在定義函數(shù)是氧猬,凡是執(zhí)行語(yǔ)句return背犯,其后面的所有語(yǔ)句將不再執(zhí)行。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盅抚,一起剝皮案震驚了整個(gè)濱河市漠魏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妄均,老刑警劉巖柱锹,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異丰包,居然都是意外死亡禁熏,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門邑彪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瞧毙,“玉大人,你說(shuō)我怎么就攤上這事寄症≈姹耄” “怎么了童叠?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵鸿吆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我望门,道長(zhǎng)剪决,這世上最難降的妖魔是什么灵汪? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任檀训,我火速辦了婚禮,結(jié)果婚禮上享言,老公的妹妹穿的比我還像新娘峻凫。我一直安慰自己,他們只是感情好览露,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布荧琼。 她就那樣靜靜地躺著,像睡著了一般差牛。 火紅的嫁衣襯著肌膚如雪命锄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天偏化,我揣著相機(jī)與錄音脐恩,去河邊找鬼。 笑死侦讨,一個(gè)胖子當(dāng)著我的面吹牛驶冒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播韵卤,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼骗污,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了沈条?” 一聲冷哼從身側(cè)響起需忿,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜡歹,沒(méi)想到半個(gè)月后屋厘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡月而,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年擅这,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片景鼠。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仲翎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铛漓,到底是詐尸還是另有隱情溯香,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布浓恶,位于F島的核電站玫坛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏包晰。R本人自食惡果不足惜湿镀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一炕吸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧勉痴,春花似錦赫模、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至雏掠,卻和暖如春斩祭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乡话。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工摧玫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绑青。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓席赂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親时迫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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