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

首頁 > 編程 > Python > 正文

Python入門(四):函數(shù)

2019-11-08 00:51:40
字體:
供稿:網(wǎng)友

1 調(diào)用函數(shù)

  函數(shù)使我們的計算更加方便。

  Python內(nèi)置了很多有用的函數(shù),我們可以直接調(diào)用。要調(diào)用一個函數(shù),需要知道函數(shù)的名稱和參數(shù),比如求絕對

值的函數(shù) abs,它接收一個參數(shù)。可以直接從Python的官方網(wǎng)站查看文檔:

http://docs.python.org/2/library/functions.html#abs。也可以在交互式命令行通過 help(abs) 查看abs函數(shù)的

幫助信息。

  調(diào)用函數(shù)的時候,如果傳入的參數(shù)數(shù)量不對,會報TypeError的錯誤,并且Python會明確地告訴你:abs()有且僅

有1個參數(shù),但給出了兩個:

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

  如果傳入的參數(shù)數(shù)量是對的,但參數(shù)類型不能被函數(shù)所接受,也會報TypeError的錯誤,并且給出錯誤信息:str

是錯誤的參數(shù)類型:

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

2 編寫函數(shù)

  在Python中,定義一個函數(shù)要使用 def 語句,依次寫出函數(shù)名、括號、括號中的參數(shù)和冒號:,然后,在縮進塊

中編寫函數(shù)體,函數(shù)的返回值用 return 語句返回。例如:

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

  請注意,函數(shù)體內(nèi)部的語句在執(zhí)行時,一旦執(zhí)行到return時,函數(shù)就執(zhí)行完畢,并將結(jié)果返回。如果沒有return

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

3 返回多值

  函數(shù)可以返回多個值。需要注意的是,Python的函數(shù)返回多值其實就是返回一個tuple。

4 遞歸函數(shù)

  在函數(shù)內(nèi)部,可以調(diào)用其他函數(shù)。如果一個函數(shù)在內(nèi)部調(diào)用自身本身,這個函數(shù)就是遞歸函數(shù)。例如:

def fact(n):    if n==1:        return 1    return n * fact(n - 1)

  這個函數(shù)其實就是計算n!。

  遞歸函數(shù)的優(yōu)點是定義簡單,邏輯清晰。理論上,所有的遞歸函數(shù)都可以寫成循環(huán)的方式,但循環(huán)的邏輯不如遞

歸清晰。使用遞歸函數(shù)需要注意防止棧溢出。在計算機中,函數(shù)調(diào)用是通過棧(stack)這種數(shù)據(jù)結(jié)構(gòu)實現(xiàn)的,每當(dāng)

進入一個函數(shù)調(diào)用,棧就會加一層棧幀,每當(dāng)函數(shù)返回,棧就會減一層棧幀。由于棧的大小不是無限的,所以,遞歸

調(diào)用的次數(shù)過多,會導(dǎo)致棧溢出。可以試試計算 fact(10000)。

5 定義默認(rèn)參數(shù)

  函數(shù)的默認(rèn)參數(shù)的作用是簡化調(diào)用,你只需要把必須的參數(shù)傳進去。但是在需要的時候,又可以傳入額外的參數(shù)

來覆蓋默認(rèn)參數(shù)值。我們來定義一個計算 x 的N次方的函數(shù):

def power(x, n):    s = 1    while n > 0:        n = n - 1        s = s * x    return s

  假設(shè)計算平方的次數(shù)最多,我們就可以把 n 的默認(rèn)值設(shè)定為 2:

def power(x, n=2):    s = 1    while n > 0:        n = n - 1        s = s * x    return s

  這樣一來,計算平方就不需要傳入兩個參數(shù)了:

>>> power(5)25

  由于函數(shù)的參數(shù)按從左到右的順序匹配,所以默認(rèn)參數(shù)只能定義在必需參數(shù)的后面。

6 定義可變參數(shù)

  如果想讓一個函數(shù)能接受任意個參數(shù),我們就可以定義一個可變參數(shù):

def fn(*args):    PRint args

  可變參數(shù)的名字前面有個 * 號,我們可以傳入0個、1個或多個參數(shù)給可變參數(shù):

>>> fn()()>>> fn('a')('a',)>>> fn('a', 'b')('a', 'b')>>> fn('a', 'b', 'c')('a', 'b', 'c')

  定義可變參數(shù)的目的也是為了簡化調(diào)用。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 铁岭市| 莒南县| 谢通门县| 辽源市| 鱼台县| 黄大仙区| 稻城县| 新邵县| 泾川县| 阜南县| 德庆县| 达日县| 云梦县| 佛山市| 铜梁县| 兰州市| 八宿县| 德庆县| 子洲县| 南宫市| 罗平县| 拉萨市| 鄂伦春自治旗| 牡丹江市| 苏州市| 博爱县| 白玉县| 成都市| 疏勒县| 客服| 巧家县| 洛扎县| 枣庄市| 栖霞市| 莲花县| 威宁| 信丰县| 巴楚县| 昌都县| 北票市| 怀仁县|