函數就是包裹一部分的代碼,實現某一個功能,達成某一個目的,而且當這段代碼如果使用或者重復使用的時候,只需要很簡單的調用即可,大大減少了代碼的維護難度。
滕州ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創新互聯建站的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
可以反復調用,提高代碼的復用性,提升開發效率,便于維護管理。
函數的定義要使用到關鍵字def
,且函數定義不會執行函數中的代碼,而是需要調用函數才會執行。
定義函數在關鍵字def
后面加上函數名,然后后面加上括號,括號中可以酌情選擇是否寫上參數,在對應的作用域中寫上代碼。
# 語法:
def function_name([parameter0],[parameter1]):
code0
code1
code2
……
直接使用定義好的函數的函數名加上括號,括號中寫上對應的參數,就會執行作用域中的代碼。
# 語法:
funciton_name([parameter0],[parameter1])
注意,只要函數只有在調用的時候才能執行其中的代碼
定義一個沒有參數的函數
# 定義函數
def func():
print('this is function')
# 調用函數
func() # this is function
帶有參數的函數
# 定義函數
def func(name):
print('this is ' + name)
# 調用函數
func('msr') # this is msr
函數的命名和變量命名的規則是一樣的,推薦使用小駝峰命名法。
函數的參數,是配合函數運算的值。在函數中的代碼使用參數的時候,就和使用變量的方法是一樣的。
定義函數的時候的參數叫做形式參數,形參就就相當于定義變量的變量名,填的參數只是為了確定功能,所以叫作形式參數;調用函數的時候的參數叫做實際參數,實參就相當于定義變量的時候的值,這個時候的參數具有實際的作用,所以叫作實際參數。
形參 | 實參 |
---|---|
普通形參 | 普通實參 |
默認形參 | 關鍵字實參 |
普通收集形參 | |
命名關鍵字形參 | |
關鍵字收集形參 |
函數調用的時候的參數要和定義的時候一一對應。
普通形參就是定義函數時在括號內直接寫參數名,普通形參沒有賦予值,所以在函數調用的時候必須要對普通形參賦予值,否則報錯。
調用函數的時候直接寫上的值就是普通實參。
# 直接寫上參數名就是普通形參
def myName(name):
res = 'My name is %s' % name
print(res)
my_name = 'msr'
# 調用函數的時候直接寫上的值就是普通實參
myName(my_name)
# 參數要一一對應,所以調用函數的時候不寫參數就會報錯
myName() # error
默認形參就是在定義函數的時候,參數就指定了一個值,換句話說默認形參就是一個帶有默認值的普通形參。在調用函數的時候如果給默認參數指定了值,默認參數的實際值就是調用處的值,如果沒有賦予值,默認參數的值就是定義處的值。
# 定義函數的時候帶有默認值的就是默認參數
def myName(name='msr'):
res = 'My name is %s' % name
print(res)
# 調用處指定值
my_name = 'msr'
myName(my_name) # My name is msr
# 調用處不指定值
myName() # My name is msr
當普通參數和默認參數他同時存在的時候,默認參數必須要在普通參數的后面,否則報錯。
def myName(name, name1='msr'):
print(name, name1)
myName('wxd',) # wxd msr
普通實參就是在調用函數的時候直接填寫值,這樣的賦值不能打亂順序,要按照形參定義的順序來寫。
關鍵字實參是對具體的某個參數賦值,這樣就可以打亂參數的順序使用,但是全部使用關鍵字實參必須將所有普通形參全部使用關鍵字實參,否則報錯
def name(name1, name2, name3, name4='沒有名字'):
print(name1, name2, name3, name4)
# 普通實參
name(111, 222, 333, 444) # 111 222 333 444
# 關鍵字實參
name(name2=444, name1=222, name3=111, name4=333) # 222 444 111 333
普通實參和關鍵字實參一起使用的時候,關鍵字實參也是不能寫在普通實參的前面的。
注意要區分默認形參和關鍵字實參,默認形參和關鍵字實參在語法上是一模一樣的,都是給某個參數一個固定的值,且都必須跟在普通形參和實參之后。但是區分的方法很簡單,默認形參是形式參數,在定義函數時的就是默認形參,關鍵字實參是實際參數,在調用函數時的就是關鍵字實參。
函數的實參要和形參一一對應,如果有普通實參沒有對應的形參,普通收集參數就可以用來專門收集多余的普通實參,在普通形參的前面加上一個*
就是普通收集參數,普通收集參數一般習慣命名為 args
。收集的數據會變成一個元組。
def func(name, *args):
print(name) # msr
print(args) # (1, 2, 3, 4, 5, 6)
func('msr', 1, 2, 3, 4, 5, 6)
關鍵字收集參數和普通收集參數的作用和普通收集參數的租用基本相同的,只不過關鍵字收集參數收集的是關鍵字實參,關鍵字收集參數在普通形參的前面加上 **
符號,一般命名為kwargs
,收集的數據變成一個字典。
def func(*args, **kwargs):
print(args)
print(kwargs)
func(1, 2, 3, 4, name='msr', age=18, sex=0)
'''
結果:
(1, 2, 3, 4)
{'name': 'msr', 'age': 18, 'sex': 0}
'''
普通收集參數和關鍵字參數一起可以收集所有的實參
# 收集所有的實參
def func(*args, **kwargs):
print(args)
print(kwargs)
命名關鍵字參數就是在函數調用的時候,必須使用關鍵字實參進行賦值的形參。
定義命名關鍵字參數的兩種方式:
def function_name(parameter, *, parameter2)參數2是命名關鍵字, * 后面的參數為命名關鍵字
**def function_name(*args, parameter, kwargs)
parameter是命名關鍵字,普通收集參數后面的普通形參是命名關鍵字參數
# 方法一, * 本身不是一個參數:
def func(*, a, b, c, d):
print(a, b, c, d) # A B C D
func(a='A', b='B', c='C', d='D')
# 方法二:
def func(*args, a, b, c):
print(a, b, c) # 3 4 2
func(a=3, b=4, c=2)
* 和 ** 在函數的定義處,用來做收集操作,打包
* 和 ** 在函數的調用處,用來做打散操作,解包
* 在定義處用來收集普通實參,成為元組;在調用處用來打散容器成為普通實參,如果是字典,只獲取鍵。
** 在定義處用來收集關鍵字實參,成為字典;在調用處用來打散字典(只能是字典,且鍵為字符串)成為關鍵字實參。
def func(*args):
print(args)
lst = [1, 2, 3, 4, 5, 6]
# 如果將列表直接作為參數放入,lst就是一個參數
func(lst) # ([1, 2, 3, 4, 5, 6],)
# 如果在lst前面加上 * ,就將列表列表解包,每一個元素都是一個參數
func(*lst) # (1, 2, 3, 4, 5, 6)
相當于將列表中的元素一個個拿出,當成一個個普通實參給函數進行調用,**也是一樣的。
def func(**kwargs):
print(kwargs)
dct = {'one': 1, 'two': 2, 'three': 3}
# ** 可以解包字典
func(**dct) # {'one': 1, 'two': 2, 'three': 3}
return可以返回自定義函數的值,叫做返回值,可以把函數最終運算出的結果返回到函數的調用處。
不指定return返回值,返回None。
# 定義函數
def func():
print('hello')
# 調用函數
# 函數執行打印'hello',沒有定義返回值,返回None給res
res = func()
print(res)
'''
結果:
hello
None
'''
定義返回值。
# 定義函數
def func():
print('hello')
return 'motherland'
# 調用函數,返回'motherland'給res
res = func()
print(res)
'''
結果:
hello
motherland
'''
執行return之后,函數后面未執行的代碼不再執行。
# 定義函數
def func():
print(1)
return 2
print(3)
# 調用函數
func()
'''
結果:
1
'''
python中的函數可以像變量一樣,動態創建銷毀,當作參數傳遞,作為值返回,叫第一類對象,其他語言功能有限。
函數名是一個特殊的變量,可以作為變量使用和賦值;
def func():
print('hello motherland')
var = func
var() # hello motherland
函數可以像變量一樣銷毀
def func():
print('hello motherland')
del func
func() # error,不存在
函數名可以作為容器類型數據的元素;
def func0():
print('func 0')
def func1():
print('func 1')
def func2():
print('func 2')
lst = [func0, func1, func2]
for i in lst:
i()
'''
結果:
func 0
func 1
func 2
'''
函數名可以作為函數的參數;
def func1():
print('我是 func 1')
def func2(function):
function()
func2(func1) # 我是 func 1
函數名可以作為函數的返回值;
def func1():
print('我是 func 1')
def func2(function):
return function
res = func2(func1)
res() # 我是 func 1
在定義函數的時候,在函數的上方使用單行注釋、或者在下方使用多行注釋可以為函數注釋說明。
可以使用__doc__
方法或者是help
函數查看。
使用help
函數查看在函數的注釋說明。
# 這是我的第一個函數
# 函數的注釋在上方
def func():
pass
print(help(func))
'''
結果:
Help on function func in module __main__:
func()
# 這是我的第一個函數
# 函數的注釋在上方
None
'''
使用 __doc__
方法查看。
def func():
"""
這是我的第二個函數
函數的注釋在下方
"""
pass
# 使用
print(func.__doc__)
'''
結果:
這是我的第二個函數
函數的注釋在下方
'''
形參在一起使用的時候要哪找順序。
普通參數 -> 默認參數 -> 普通收集參數 -> 命名關鍵字參數 -> 關鍵字收集參數
網頁名稱:python函數基礎
網站地址:http://m.kartarina.com/article20/dsoghjo.html
成都網站建設公司_創新互聯,為您提供企業建站、營銷型網站建設、網站收錄、Google、品牌網站設計、
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯