在Python中,函數是一個非常重要的概念,它可以將一段代碼塊封裝成一個單獨的、可重複使用的單元。正確定義一個函數可以提高代碼的可讀性、可維護性和可重用性。
一、函數的基本語法
def function_name(parameters): """docstring""" statement(s)
如上,函數定義以關鍵字def
開頭,後接函數名、參數列表,其中parameters
是可選的。函數體內可以包含一條或多條statement
,可以是任意有效的語句代碼。函數的執行結果通過return
語句返回。
函數名由字母、數字和下劃線組合而成,並以字母或下劃線開頭。Python中的函數名是大小寫敏感的。函數名要具有描述性,以便於代碼閱讀和理解。
# 示例1 def add(a, b): result = a + b return result print(add(1, 2)) # 輸出:3
上述示例定義了一個函數add
,它的參數列表為a
和b
。函數體內result = a + b
將a
和b
相加,將結果賦值給result
,return result
語句返回result
的值。
二、參數傳遞
Python中函數的參數傳遞有兩種方式:值傳遞和引用傳遞。
當將一個變量作為參數傳遞給函數時,Python默認採用的是值傳遞,即將變量的副本傳遞給函數。在函數中對副本進行修改不會影響原始變量。
# 示例2 def func(a): a = 3 print("函數內部:", a) return x = 5 func(x) print("函數外部:", x) # 輸出: # 函數內部: 3 # 函數外部: 5
示例2的執行過程如下:首先定義了一個函數func
,其中將a
的值修改為3
,然後執行print("函數內部:", a)
語句輸出修改後的值。接着定義了變量x
,將其值設為5
,將x
作為參數傳遞給func
函數,執行func(x)
語句,輸出”函數內部: 3″。最後執行print("函數外部:", x)
語句,輸出原始值”函數外部: 5″。
如果使用引用傳遞,則意味着在函數內部對參數的任何修改都會影響原始變量。
# 示例3 def func(mylist): mylist.append([4, 5, 6]) print("函數內部:", mylist) return mylist = [1, 2, 3] func(mylist) print("函數外部:", mylist) # 輸出: # 函數內部: [1, 2, 3, [4, 5, 6]] # 函數外部: [1, 2, 3, [4, 5, 6]]
示例3的執行過程如下:首先定義了一個函數func
,其中向mylist
列表中添加一個新的列表[4, 5, 6]
,然後執行print("函數內部:", mylist)
語句,輸出修改後的列表。接着定義了列表mylist
,將其值設為[1, 2,3]
,將mylist
作為參數傳遞給func
函數,執行func(mylist)
語句,輸出”函數內部: [1, 2, 3, [4, 5, 6]]”。最後執行print("函數外部:", mylist)
語句,輸出修改後的列表”函數外部: [1, 2, 3, [4, 5, 6]]”。
三、函數的參數
Python中的函數參數可以分為四種類型:必備參數、默認參數、可變參數和關鍵字參數。
1. 必備參數
必備參數是指必須要傳遞給函數的參數,如果沒有傳遞這些參數,函數調用會失敗。
# 示例4 def print_info(name, age): print("Name: ", name) print("Age: ", age) return print_info("Tom", 18) # 輸出: # Name: Tom # Age: 18
上述示例定義了一個函數print_info
,其中包含兩個必備參數name
和age
,並輸出這兩個參數的值。執行print_info("Tom", 18)
語句,輸出”Name: Tom”和”Age: 18″。
2. 默認參數
默認參數是指在函數定義時,為參數指定默認值,如果沒有傳遞該參數,則使用默認值。
# 示例5 def print_info(name, age=18): print("Name: ", name) print("Age: ", age) return print_info("Tom") # 輸出: # Name: Tom # Age: 18
上述示例定義了一個函數print_info
,其中age
參數指定了默認值18
,如果在函數調用時沒有傳遞這個參數,則使用默認值18
。執行print_info("Tom")
語句,輸出”Name: Tom”和”Age: 18″。
3. 可變參數
可變參數是指函數傳遞的參數個數不確定,可以是任意個。Python中可變參數可以使用星號*
表示。
# 示例6 def sum_num(*args): sum = 0 for i in args: sum += i return sum print(sum_num(1, 2, 3)) # 輸出:6 print(sum_num(1, 2, 3, 4, 5)) # 輸出:15
上述示例定義了一個函數sum_num
,其中可變參數*args
將傳入的所有參數封裝成一個元組。函數體內通過循環遍歷所有參數,將它們相加並返回結果。
4. 關鍵字參數
關鍵字參數是指傳遞給函數的參數在函數內部通過參數名來匹配。Python中,關鍵字參數可以使用兩個星號**
表示。
# 示例7 def print_info(name, age): print("Name: ", name) print("Age: ", age) return print_info(name="Tom", age=18) # 輸出: # Name: Tom # Age: 18
上述示例定義了一個函數print_info
,其中的參數都是必備參數。通過在參數名前面加上name=
或者age=
將其變成關鍵字參數,這樣在調用函數時就可以按照參數名來傳遞參數。注意:如果同時存在可變參數和關鍵字參數,則可變參數必須放在關鍵字參數的前面。
四、函數的注釋
Python中可以為函數添加註釋,提高代碼的可讀性。注釋可以在函數定義內部的字符串中,稱為docstring
,也可以在函數定義後面通過#
來添加單行注釋。
# 示例8 def add(a, b): """ add(a, b) -> int 返回a和b的和。 """ result = a + b return result print(add(1, 2)) # 輸出:3
上述示例定義了一個函數add
,其中第一行用字符串格式書寫add(a, b) -> int
,指定了函數的參數和返回值。在接下來的若干行中用多行字符串表示函數的功能和特點。
注意:可使用help()
函數來查看函數的注釋。
# 示例9 help(add) # 輸出: # Help on function add in module __main__: # # add(a, b) # add(a, b) -> int # # 返回a和b的和。
總結
Python中函數的定義非常簡單,可以通過基本語法來定義函數,對於參數傳遞、可變參數、關鍵字參數等需要靈活運用。在定義函數時,注釋也很重要,可以提高代碼的可讀性和可維護性。下面是所有示例的代碼。
# 示例1 def add(a, b): result = a + b return result print(add(1, 2)) # 輸出:3 # 示例2 def func(a): a = 3 print("函數內部:", a) return x = 5 func(x) print("函數外部:", x) # 輸出: # 函數內部: 3 # 函數外部: 5 # 示例3 def func(mylist): mylist.append([4, 5, 6]) print("函數內部:", mylist) return mylist = [1, 2, 3] func(mylist) print("函數外部:", mylist) # 輸出: # 函數內部: [1, 2, 3, [4, 5, 6]] # 函數外部: [1, 2, 3, [4, 5, 6]] # 示例4 def print_info(name, age): print("Name: ", name) print("Age: ", age) return print_info("Tom", 18) # 輸出: # Name: Tom # Age: 18 # 示例5 def print_info(name, age=18): print("Name: ", name) print("Age: ", age) return print_info("Tom") # 輸出: # Name: Tom # Age: 18 # 示例6 def sum_num(*args): sum = 0 for i in args: sum += i return sum print(sum_num(1, 2, 3)) # 輸出:6 print(sum_num(1, 2, 3, 4, 5)) # 輸出:15 # 示例7 def print_info(name, age): print("Name: ", name) print("Age: ", age) return print_info(name="Tom", age=18) # 輸出: # Name: Tom # Age: 18 # 示例8 def add(a, b): """ add(a, b) -> int 返回a和b的和。 """ result = a + b return result print(add(1, 2)) # 輸出:3 # 示例9 help(add) # 輸出: # Help on function add in module __main__: # # add(a, b) # add(a, b) -> int # # 返回a和b的和。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/194650.html