7.1 創建函數
在 Python 中創建函數是編程的一個基本方面,讓程式碼更具模組化、重用性和可讀性。Python 中的函數通過 關鍵字 def 定義,後面是函數名和帶有參數的括號。
你可以把函數想像成一組指令的集合,並給這個集合一個名字。函數定義的基本結構如下:
def 名稱(參數):
指令1
指令2
指令N
最簡單的 Python 函數可能是這樣的:
def greet():
print("Hello, World!")
你可以通過在函數名稱後加上括號來調用函數:
greet() # 輸出: Hello, World!
調用函數等同於在調用處撰寫其內部程式碼。與其重複撰寫相同的程式碼,不如將其提取到單獨的塊中並命名。
7.2 向函數傳遞參數
使用函數不會那麼有趣,如果它們每次都做同樣的事 —— 僅僅是個有名字的指令塊。因此,對函數設計了參數 —— 可以通過它們將不同的值傳遞給函數的變數。
函數內的變數稱為函數參數。而在具體調用時傳遞給它們的值,稱為函數的參數。函數參數僅僅接收參數的值。
def greet(name):
print("Hello,", name)
greet("Alice") # 輸出: Hello, Alice!
帶有兩個參數的函數示例:
def print_sum(a, b):
print(f"Sum {a} 和 {b} 等於 {a + b}")
print_sum(10, 15) # 輸出: Sum 10 和 15 等於 25
當然,也可以將整個表達式傳遞作為參數:
def print_sum(a, b):
print(f"Sum {a} 和 {b} 等於 {a + b}")
print_sum(10*10-123, 15//2) # 輸出: Sum -23 和 7 等於 -16
有用的小提示! 對於 C/C++ 愛好者 所有 的變數在 Python 中都是從 C++ 角度來看的引用。函數的參數也是如此。在賦值時,值從不複製或重複分配 —— 始終僅賦值引用。
7.3 函數是一個對象
在 Python 中,函數是 一級對象,這意味着它們可以像其他對象一樣使用。這給開發者提供了一個強大的工具來創建靈活的軟件解決方案。
函數作為對象
作為一級對象,Python 中的函數可以:
- 賦值給變量
- 作為參數傳遞給其他函數
- 從其他函數返回
- 包括在數據結構中,如列表、字典
示例:
def shout(text):
return text.upper()
yell = shout
def greet(func):
greeting = func("Hello") # 呼叫函數
print(greeting)
greet(shout)
在未來我們還會多次探討這個主題,目前請記住 — 在 Python 中一切都是對象。函數、類別、錯誤、列表、模組等都是。
GO TO FULL VERSION