一、函數(shù)的介紹及其作用
編程語(yǔ)言中的函數(shù)與數(shù)學(xué)中的函數(shù)是有區(qū)別的:數(shù)學(xué)中的函數(shù)有參數(shù)(輸入),就會(huì)有相應(yīng)的結(jié)果(輸出)。編程語(yǔ)言中的函數(shù)有輸入,不一定會(huì)返回結(jié)果。編程語(yǔ)言中的函數(shù)其實(shí)就是一個(gè)用于完成某個(gè)特定功能的相關(guān)代碼的代碼段 。那么哪些代碼語(yǔ)句應(yīng)該被整合到一起定義為一個(gè)函數(shù)呢?這取決于你想讓這個(gè)函數(shù)完成的功能是什么。
為什么要將這個(gè)代碼段定義成一個(gè)函數(shù)呢?這其實(shí)就是函數(shù)的作用。假設(shè)我們?cè)诰帉懸粋€(gè)可供用戶選擇的菜單程序,程序啟動(dòng)時(shí)需要打印一遍菜單列表,而且程序運(yùn)行過程中用戶也可以隨時(shí)打印菜單列表,也就是說打印菜單列表的代碼段可能要多次被用到,假設(shè)每次打印的菜單列表都是一樣的,而且列表很長(zhǎng),那么我們是否應(yīng)該每次在需要打印菜單的時(shí)候重復(fù)執(zhí)行相同的代碼呢?那么當(dāng)我們需要增加或者減少一個(gè)菜單項(xiàng)時(shí)怎么辦呢?顯然我們需要在每個(gè)打印菜單的代碼點(diǎn)都進(jìn)行修改。如果我們把打印菜單的相關(guān)代碼拿出來定義為一個(gè)函數(shù),又會(huì)出現(xiàn)這樣的場(chǎng)景呢?我們只需要在需要打印菜單列表的地方使用這個(gè)函數(shù);當(dāng)需要添加或減少一個(gè)菜單項(xiàng)時(shí),只需要修改這個(gè)函數(shù)中的內(nèi)容即可,程序的維護(hù)和擴(kuò)展成本大大降低;同時(shí),我們這個(gè)程序的代碼會(huì)更加簡(jiǎn)潔,而且有條理性更加便于閱讀,而不是一坨亂糟糟的讓人看著就想重寫的東西。當(dāng)然,如果你要打印的是多級(jí)菜單,你可以通過函數(shù)的參數(shù)或全部變量通知該函數(shù)要打印的是幾級(jí)菜單。總結(jié)一下,編程語(yǔ)言中的函數(shù)的作用就是實(shí)現(xiàn)代碼的可重用性,提高代碼可維護(hù)性、擴(kuò)展性和可讀性。
二、函數(shù)的定義與調(diào)用
1. 函數(shù)的定義
高級(jí)編程語(yǔ)言通常會(huì)提供很多內(nèi)置的函數(shù)來屏蔽底層差異,向上暴露一些通用的接口,比如我們之前用到的print()函數(shù)和open()函數(shù)。除此之外,我們也可以自定義我們需要的函數(shù)。由于函數(shù)本身也是程序代碼的一部分,因此為了標(biāo)識(shí)出這段代碼是一個(gè)函數(shù)通常需要使用特定的格式或關(guān)鍵字。另外還涉及到參數(shù)、方法名稱、返回值等相關(guān)問題的約束。