在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-hant/n/194650.html
微信掃一掃
支付寶掃一掃