一、函數的定義與調用
Python是一門高級編程語言,它支持面向對象編程和面向過程編程,而函數就屬於面向過程編程的基本元素之一。在Python中,函數使用def關鍵字來定義。
def function_name(parameters): statement(s) return expression
其中,function_name是函數名稱,parameters是函數的參數列表,statement是函數體,expression是返回值。在調用函數時,只需寫出函數名,並輸入實參,即可調用函數。
# 定義函數 def add(x, y): return x + y # 調用函數 a = add(1, 2) print(a) # 輸出3
二、函數的參數
函數的參數可以分為兩種:形式參數和實際參數。形式參數是定義函數時的參數,實際參數是調用函數時傳遞給函數的參數。
1. 位置參數
位置參數是最常用的參數類型,它是根據參數位置來確定傳遞給函數的實際參數的。例如,下面的函數中,x和y就是位置參數。
def add(x, y): return x + y
調用該函數時,需要按照參數位置來傳遞實際參數。
a = add(1, 2) print(a) # 輸出3
2. 默認參數
默認參數是在定義函數時給定默認值的參數,如果調用函數時不傳遞該參數,函數將使用默認值。例如:
def add(x, y=0): return x + y
該函數中,y的默認值是0。因此,如果調用add函數時只傳遞一個參數,那麼y將使用默認值0。
a = add(1) print(a) # 輸出1
3. 關鍵字參數
關鍵字參數是指在調用函數時使用參數名來傳遞參數的方式。關鍵字參數可以不按照參數位置來傳遞參數。例如:
def add(x, y): return x + y a = add(x=1, y=2) print(a) # 輸出3
4. 可變參數
可變參數是指在調用函數時可以傳遞任意數量的實際參數的參數類型。Python中主要有兩種可變參數:*args和**kwargs。
其中,*args表示不定長的位置參數,它可以接受任意數量的參數。**kwargs表示不定長的關鍵字參數,它可以接受任意數量的關鍵字參數。
# *args示例 def add(*args): result = 0 for arg in args: result += arg return result a = add(1, 2, 3, 4, 5) print(a) # 輸出15 # **kwargs示例 def func(**kwargs): for key, value in kwargs.items(): print('%s=%s' % (key, value)) func(a=1, b=2, c=3) # 輸出: # a=1 # b=2 # c=3
三、函數的返回值
函數的返回值表示函數執行後需要返回給調用者的值。在Python中,函數使用return語句來返回值。
如果函數沒有return語句,則函數返回None。
1. 單返回值函數
單返回值函數是指只返回一個值的函數。例如:
def add(x, y): return x + y a = add(1, 2) print(a) # 輸出3
2. 多返回值函數
多返回值函數是指返回多個值的函數。可以使用元組、列表等來返回多個值。
def func(): return 1, 2, 3 a, b, c = func() print(a, b, c) # 輸出1 2 3
四、函數的作用域
Python中的變量分為兩種:全局變量和局部變量。全局變量是在整個程序中都可以使用的變量,局部變量是在函數內部定義的變量,只能在函數內部使用。
在Python中,函數可以訪問全局變量,但是如果在函數內部修改全局變量的值,則需要使用global關鍵字。
x = 10 def func(): global x x = 20 func() print(x) # 輸出20
五、函數的嵌套與遞歸
1. 函數的嵌套
函數的嵌套是指在一個函數內部定義另一個函數。例如:
def outer(): def inner(): print('inner') inner() outer() # 輸出inner
2. 函數的遞歸
遞歸是指在函數內部調用自己的過程。遞歸可以很方便地解決一些問題,例如二叉樹的遍歷。
# 遞歸求階乘 def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(5)) # 輸出120
六、小結
Python中的函數是程序的基本元素之一,掌握函數的定義與調用、參數、返回值、作用域、嵌套與遞歸等內容,可以讓我們更好地編寫程序。
原創文章,作者:WFUF,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/131661.html