国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中自定義函數(shù)的教程

2020-02-23 00:54:22
字體:
供稿:網(wǎng)友

在Python中,定義一個(gè)函數(shù)要使用def語句,依次寫出函數(shù)名、括號、括號中的參數(shù)和冒號:,然后,在縮進(jìn)塊中編寫函數(shù)體,函數(shù)的返回值用return語句返回。

我們以自定義一個(gè)求絕對值的my_abs函數(shù)為例:

def my_abs(x):  if x >= 0:    return x  else:    return -x

請自行測試并調(diào)用my_abs看看返回結(jié)果是否正確。

請注意,函數(shù)體內(nèi)部的語句在執(zhí)行時(shí),一旦執(zhí)行到return時(shí),函數(shù)就執(zhí)行完畢,并將結(jié)果返回。因此,函數(shù)內(nèi)部通過條件判斷和循環(huán)可以實(shí)現(xiàn)非常復(fù)雜的邏輯。

如果沒有return語句,函數(shù)執(zhí)行完畢后也會(huì)返回結(jié)果,只是結(jié)果為None。

return None可以簡寫為return。
空函數(shù)

如果想定義一個(gè)什么事也不做的空函數(shù),可以用pass語句:

def nop():  pass

pass語句什么都不做,那有什么用?實(shí)際上pass可以用來作為占位符,比如現(xiàn)在還沒想好怎么寫函數(shù)的代碼,就可以先放一個(gè)pass,讓代碼能運(yùn)行起來。

pass還可以用在其他語句里,比如:

if age >= 18:  pass

缺少了pass,代碼運(yùn)行就會(huì)有語法錯(cuò)誤。
參數(shù)檢查

調(diào)用函數(shù)時(shí),如果參數(shù)個(gè)數(shù)不對,Python解釋器會(huì)自動(dòng)檢查出來,并拋出TypeError:

>>> my_abs(1, 2)Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: my_abs() takes exactly 1 argument (2 given)

但是如果參數(shù)類型不對,Python解釋器就無法幫我們檢查。試試my_abs和內(nèi)置函數(shù)abs的差別:

>>> my_abs('A')'A'>>> abs('A')Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: bad operand type for abs(): 'str'

當(dāng)傳入了不恰當(dāng)?shù)膮?shù)時(shí),內(nèi)置函數(shù)abs會(huì)檢查出參數(shù)錯(cuò)誤,而我們定義的my_abs沒有參數(shù)檢查,所以,這個(gè)函數(shù)定義不夠完善。

讓我們修改一下my_abs的定義,對參數(shù)類型做檢查,只允許整數(shù)和浮點(diǎn)數(shù)類型的參數(shù)。數(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')Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 3, in my_absTypeError: bad operand type

錯(cuò)誤和異常處理將在后續(xù)講到。
返回多個(gè)值

函數(shù)可以返回多個(gè)值嗎?答案是肯定的。

比如在游戲中經(jīng)常需要從一個(gè)點(diǎn)移動(dòng)到另一個(gè)點(diǎn),給出坐標(biāo)、位移和角度,就可以計(jì)算出新的新的坐標(biāo):

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 五台县| 台东市| 石渠县| 乌审旗| 武乡县| 肥乡县| 师宗县| 格尔木市| 开封县| 永新县| 嘉兴市| 铜陵市| 灵寿县| 麻江县| 林西县| 瑞昌市| 宁武县| 青岛市| 沂南县| 梅河口市| 新邵县| 沧州市| 涞源县| 阿克苏市| 会泽县| 桐柏县| 霍邱县| 乌什县| 夏河县| 宜昌市| 康马县| 壶关县| 阜城县| 渑池县| 三江| 哈巴河县| 永城市| 玛曲县| 台南县| 都昌县| 黄陵县|