3.5 新增新函式

ifelif發表於2016-08-11

目前為止,我們只是在使用Python提供的函式,但新增新函式也是有可能的。函式定義詳細說明了一個新函式的名稱和當函式被呼叫時將執行的一系列語句。

這是一個例子:

def print_lyrics():
    print "I'm a lumberjack, and I'm okay."
    print "I sleep all night and I work all day."

def是一個關鍵字,它指出這是一個函式定義。函式的名稱是print_lyrics。對函式名稱的要求和對變數名稱的要求相同:字母,資料和一些標點符號是合法的,但第一個字元不能是數字。你不能使用一個關鍵字作為函式的名稱,並且你應該避免變數和函式具有相同的名稱。

函式名後的空圓括號指出這個函式不接收任何引數(arguments)。

函式定義的第一行被叫作函式頭(header),剩餘的部分被叫作函式體(body)。函式頭必須以一個冒號結尾,並且函式體必須縮排。按照慣例,縮排總是4個空格(另見 3.14)。函式體可以包含許多語句。

列印語句中的字串被雙引號包圍。單引號和雙引號做著相同的事。除了單引號(也稱為撇號)出現在字串中的情況,大多數人都使用單引號。

如果你在互動模式中鍵入一個函式定義,直譯器列印省略號(...)以使你知道函式定義是不完整的:

>>> def print_lyrics():
...     print "I'm a lumberjack, and I'm okay."
...     print "I sleep all night and I work all day."
...

為了結束函式,你必須輸入一個空行(在指令碼中這不是必須的)。

定義的函式建立了一個具有相同名字的變數。

>>> print print_lyrics
<function print_lyrics at 0xb7e99e9c>
>>> type(print_lyrics)
<type 'function'>

變數print_lyrics的值是一個函式物件,它具有函式型別。

呼叫這個新函式的語法和呼叫內建函式的語法相同:

>>> print_lyrics()
I'm a lumberjack, and I'm okay.
I sleep all night and I work all day.

一旦你定義了一個函式,你就可以在另一個函式中使用它。例如,為了重複之前的副歌,我們可以寫一個叫作repeat_lyrics的函式:

def repeat_lyrics():
    print_lyrics()
    print_lyrics()

然後呼叫函式repeat_lyrics:

>>> repeat_lyrics()
I'm a lumberjack, and I'm okay.
I sleep all night and I work all day.
I'm a lumberjack, and I'm okay.
I sleep all night and I work all day.

但是這首歌並不是真的這麼唱。

相關文章