一、函數存在的意義
函數存在就是解決以下問題的:
- 程序組織結構不清晰,可讀性差
- 代碼冗餘
- 可維護性、可擴展性差
二、定義函數
函數的定義:就相當於事先將函數體代碼保存起來,然後將內存地址賦值給函數名,函數名就是對這段代碼的引用,這和變量的定義是相似的。
定義函數的語法:
def 函數名(參數1,參數2,...):
"""文檔描述"""
函數體
return 值
def: 定義函數的關鍵字;
函數名:函數名指向函數內存地址,是對函數體代碼的引用。函數的命名應該反映出函數的功能;
括號:括號內定義參數,參數是可有可無的,且無需指定參數的類型;
冒號:括號後要加冒號,然後在下一行開始縮進編寫函數體的代碼;
"""文檔描述""": 描述函數功能,參數介紹等信息的文檔,非必要,但是建議加上,從而增強函數的可讀性;
函數體:由語句和表達式組成;
return 值:定義函數的返回值,return是可有可無的。
三、調用函數與函數返回值
函數的使用分爲定義階段與調用階段,定義函數時只檢測語法,不執行函數體代碼,函數名加括號即函數調用,只有調用函數時纔會執行函數體代碼。
#定義階段
def foo():
print('in the foo')
bar()
def bar():
print('in the bar')
#調用階段
foo()
執行此程序文件時,將該文件從硬盤加載進內存,將函數體的內存地址賦值給函數名。
若需要將函數體代碼執行的結果返回給調用者,則需要用到return。return後無值或直接省略return,則默認返回None
,return的返回值無類型限制,且可以將多個返回值放到一個元組內。
>>> def test(x,y,z):
... return x,y,z #等同於return (x,y,z)
...
>>> res=test(1,2,3)
>>> print(res)
(1, 2, 3)
返回逗號隔開的多個值,就是返回一個元組
,我們要知道,元組就是可以這樣寫的x,y,z
,不用加括號。
return是一個函數結束的標誌
,函數內可以有多個return,但只執行一次函數就結束了,並把return後定義的值作爲本次調用的結果返回,return後面的語句是永遠都執行不到
。