盤點(diǎn)Python定義函數(shù)基礎(chǔ)知識(shí)
一、定義函數(shù)
在Python中,定義一個(gè)函數(shù)要使用def語句,依次寫出函數(shù)名、括號(hào)、括號(hào)中的參數(shù)和冒號(hào):,然后,在縮進(jìn)塊中編寫函數(shù)體,函數(shù)的返回值用return語句返回。
定義函數(shù)的格式如下:
- def 函數(shù)名():
- 代碼
示例:
- # 定義一個(gè)函數(shù),能夠完成打印信息的功能
- def printInfo():
- print '------------------------------------'
- print 'Go語言進(jìn)階學(xué)習(xí)'
- print '------------------------------------'
1.定義帶有參數(shù)的函數(shù)
示例如下:
- def add2num(a, b):
- c = a+b
- print c
2.調(diào)用帶有參數(shù)的函數(shù)
以調(diào)用上面的add2num(a, b)函數(shù)為例:
- def add2num(a, b):
- c = a + b
- print(c)
- add2num(11, 22)# 調(diào)用帶有參數(shù)的函數(shù)時(shí),需要在小括號(hào)中,傳遞數(shù)據(jù)
運(yùn)行結(jié)果:

3.調(diào)用函數(shù)時(shí)參數(shù)的順序
- >>> def test(a,b):
- ... print(a,b)
- ...
- print(test(1, 2))
- 1 2
- print(test(b=1, a=2))
- 2 1
- >>>
- >>> print(test(b=1, 2))
- File "<stdin>", line 1
- SyntaxError: positional argument follows keyword argument
二、調(diào)用函數(shù)
定義了函數(shù)之后,就相當(dāng)于有了一個(gè)具有某些功能的代碼,想要讓這些代碼能夠執(zhí)行,需要調(diào)用它
調(diào)用函數(shù)很簡(jiǎn)單的,通過 函數(shù)名() 即可完成調(diào)用。
例:
- # 定義完函數(shù)后,函數(shù)是不會(huì)自動(dòng)執(zhí)行的,需要調(diào)用它才可以
- printInfo()
三、函數(shù)返回多個(gè)值
1.函數(shù)可以返回多個(gè)值嗎?答案是肯定的。
帶有返回值的函數(shù)
想要在函數(shù)中把結(jié)果返回給調(diào)用者,需要在函數(shù)中使用return
如下示例:
- def add2num(a, b):
- c = a+b
- return c
或者
- def add2num(a, b):
- return a+b
2.保存函數(shù)的返回值
如果一個(gè)函數(shù)返回了一個(gè)數(shù)據(jù),那么想要用這個(gè)數(shù)據(jù),那么就需要保存
保存函數(shù)的返回值示例如下:
- # 定義函數(shù)
- def add2num(a, b):
- return a + b
- # 調(diào)用函數(shù),順便保存函數(shù)的返回值
- result = add2num(100, 98)
- # 因?yàn)閞esult已經(jīng)保存了add2num的返回值,所以接下來就可以使用了
- print(result)
運(yùn)行結(jié)果:
四、my_abs和內(nèi)置函數(shù)abs的差別
- print(my_abs('A'))
當(dāng)傳入了不恰當(dāng)?shù)膮?shù)時(shí),內(nèi)置函數(shù)abs會(huì)檢查出參數(shù)錯(cuò)誤,而定義的my_abs沒有參數(shù)檢查,會(huì)導(dǎo)致if語句出錯(cuò),出錯(cuò)信息和abs不一樣。
修改一下my_abs的定義,數(shù)據(jù)類型檢查可以用內(nèi)置函數(shù)isinstance()實(shí)現(xiàn):
- def my_abs(x):
- if not isinstance(x, (int, float)):
- raise TypeError('bad operand type')
- if x >= 0:
- return x
- else:
- return -x
添加了參數(shù)檢查后,如果傳入錯(cuò)誤的參數(shù)類型,函數(shù)就可以拋出一個(gè)錯(cuò)誤:
- my_abs('A')
五、總結(jié)
本文基于Python基礎(chǔ),介紹了函數(shù)定義。定義函數(shù)時(shí),需要確定函數(shù)名和參數(shù)個(gè)數(shù);如果有必要,可以先對(duì)參數(shù)的數(shù)據(jù)類型做檢查;函數(shù)體內(nèi)部可以用return隨時(shí)返回函數(shù)結(jié)果。