一、什麼是函數
函數是指為了完成特定任務、可以重複使用的一段程序代碼,函數可以接受輸入參數和返回輸出結果,是編程語言中最基本的代碼模塊之一。
在Python中,使用「def」關鍵字定義,後面跟函數名和一對圓括號,圓括號中可以包括若干個參數。函數語法如下所示:
def func_name(arg1,arg2,...,argn):
statement1
statement2
...
return [expression]
其中,def代表函數定義關鍵字;func_name為函數名,命名規則和變量命名規則相同;arg1~argn為函數參數,用逗號隔開;statement1和statement2為函數體,語句塊可以包含零個或多個語句;return語句用來返回函數的結果,也可以省略。
二、函數的使用
函數的使用可以分為三個部分:函數的定義、函數的調用、函數的返回值。
1.函數的定義
在Python中定義一個函數,只需要使用def關鍵字即可,例如,定義一個求兩個數之和的函數,代碼如下:
def sum(a, b):
return a + b
2.函數的調用
調用函數時,需要指定函數名,並且傳入必要的參數。例如,調用上述函數sum()計算3+4的結果,代碼如下:
c = sum(3, 4)
print(c)
執行結果為:
7
3.函數的返回值
函數執行完後,可以通過return語句返回一個值或一組值。例如,定義一個函數檢查年份是否為閏年:
def is_leap(year):
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
return True
else:
return False
調用函數判斷2000年是否是閏年:
b = is_leap(2000)
print(b)
執行結果為:
True
三、函數的參數傳遞
在Python中,函數的參數傳遞有兩種方式:傳值和傳址。
1.傳值
傳值指的是將參數的值複製一份傳遞給函數,函數內部的操作不會影響調用函數時傳遞的參數本身。例如:
def change_num(num):
num += 1
print("內部:num=", num)
a = 1
change_num(a)
print("外部:a=", a)
執行結果為:
內部:num= 2
外部:a= 1
可以看到在函數內部修改num的值對參數a沒有任何影響。
2.傳址
傳址指的是將參數的地址傳遞給函數,函數內部操作會影響調用函數時傳遞的參數本身。Python中默認情況下,所有參數都是傳址。
例如,定義一個將列表中的元素加1的函數:
def add_one(lst):
for i in range(len(lst)):
lst[i] += 1
print("內部:lst=", lst)
b = [1, 2, 3]
add_one(b)
print("外部:b=", b)
執行結果為:
內部:lst= [2, 3, 4]
外部:b= [2, 3, 4]
在函數內部修改了列表lst,對參數b也產生了影響。
四、函數的參數類型
Python中的函數參數類型可以分為四種:位置參數、默認參數、可變參數和關鍵字參數。
1.位置參數
位置參數是最常用的一種參數類型,是指按照函數定義順序傳遞參數,例如:
def foo(x, y):
print("x=", x)
print("y=", y)
foo(1, 2)
輸出結果為:
x= 1
y= 2
2.默認參數
默認參數是指在函數定義時,給參數設置一個默認值。調用函數時,如果不傳該參數,則使用默認值。例如:
def foo(x, y=2):
print("x=", x)
print("y=", y)
foo(1)
foo(1, 3)
執行結果為:
x= 1
y= 2
x= 1
y= 3
3.可變參數
可變參數是指傳入的參數個數是可變的。在函數定義時使用*args表示可變參數,例如:
def foo(*args):
for arg in args:
print(arg)
foo(1, 2, 3)
執行結果為:
1
2
3
4.關鍵字參數
關鍵字參數是指在函數調用時,使用形如key=value的方式進行調用。在函數定義時使用**kwargs表示關鍵字參數,例如:
def foo(**kwargs):
for key, value in kwargs.items():
print(key, "=", value)
foo(name="Alice", age=18)
執行結果為:
name = Alice
age = 18
五、函數的嵌套調用
函數的嵌套調用是指在一個函數中調用另一個函數。例如,定義一個求兩個數平方和的函數sum_of_squares(),並在另一個函數foo()中調用此函數:
def sum_of_squares(x, y):
return x**2 + y**2
def foo(a, b):
return sum_of_squares(a, b)
c = foo(3, 4)
print(c)
執行結果為:
25
六、總結
函數是Python語言中非常重要的一種結構,可以讓程序變得更加模塊化和可復用。Python中通過def關鍵字定義函數,可以使用位置參數、默認參數、可變參數和關鍵字參數進行函數參數傳遞,多種參數形式使得函數更加靈活。通過函數的嵌套調用,可以大大提高編程效率。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/231649.html