函式可以讓我們創建一組需要時可以運行的指令。

在 Python 和許多其他程式語言中,函式是創建有意義的程式的關鍵,因為它們允許我們將一個程式分解為易於管理的部分,並促進代碼的可讀性和重用。

這是一個名為 hello 的例子函式,它會打印出 “Hello!":

def hello():
    print('Hello!')

這是函式的定義。它有一個名字 (hello) 和一個主體,即一組指令,該部分位於冒號之後,並且向右縮進了一級。

要運行這個函式,我們必須呼叫它。以下是呼叫函式的語法:

hello()

我們可以執行這個函式一次,或者多次。

函式的名字 hello 非常重要,它應該具有描述性,這樣任何調用它的人都能想象出函式的功能。

函式可以接受一個或多個參數:

def hello(name):
    print('Hello ' + name + '!')

在這種情況下,我們呼叫函式並傳遞參數:

hello('Roger')

我們把函式定義內接受的值稱為參數,而在呼叫函式時傳遞的值稱為參數。人們常常會對此混淆不清。

參數可以有一個預設值,如果該參數未指定,則應用預設值:

def hello(name='my friend'):
    print('Hello ' + name + '!')

hello()
#Hello my friend!

以下是如何接受多個參數的示例:

def hello(name, age):
    print('Hello ' + name + ', you are ' + str(age) + ' years old!')

在這種情況下,我們呼叫函式並傳遞一組參數:

hello('Roger', 8)

參數是按引用傳遞的。在 Python 中,所有類型都是對象,但其中一些是不可變的,包括整數、布林值、浮點數、字符串和元組。這意味著如果您將它們作為參數傳遞並在函式內部修改它們的值,則新值不會反映在函式外部:

def change(value):
    value = 2

val = 1
change(val)

print(val) #1

如果您傳遞的是一個不可變對象,並且更改其屬性之一,則更改將反映在外部。

函式可以使用 return 陳述式返回一個值。例如,在這個例子中,我們返回 name 參數的名字:

def hello(name):
    print('Hello ' + name + '!')
    return name

當函式遇到 return 陳述式時,函式結束。

我們可以省略返回值:

def hello(name):
    print('Hello ' + name + '!')
    return

我們可以在條件語句中使用返回陳述式,這是一種在不滿足起始條件時結束函式的常用方法:

def hello(name):
    if not name:
        return
    print('Hello ' + name + '!')

如果我們呼叫函式並傳遞評估為 False 的值,例如空字符串,則在達到 print() 陳述式之前,函式就會終止。

您可以通過使用逗號分隔的值來返回多個值:

def hello(name):
    print('Hello ' + name + '!')
    return name, 'Roger', 8

在這種情況下,呼叫 hello('Syd') 的返回值是一個包含這 3 個值的元組:('Syd', 'Roger', 8)