麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Python > 正文

Python中自定義函數(shù)的方法

2023-04-25 12:32:11
字體:
供稿:網(wǎng)友

在程序設計中,函數(shù)或類的方法可以實現(xiàn)代碼的復用,方便代碼的維護和實現(xiàn)模塊化編程。

Python中在各個模塊中內(nèi)置了大量的函數(shù)可以幫助我們實現(xiàn)很多工作。在實際程序設計中,我們也可以把多次重用的代碼以函數(shù)的方式在程序多個地方進行調(diào)用。這就需要程序提供一種自定義函數(shù)的功能。

一、Python中自定義函數(shù)的語法

在Python中使用 def 關(guān)鍵字來定義一個函數(shù):

def 函數(shù)名稱(參數(shù)列表):
    函數(shù)語句

即一個python函數(shù)使用def 來定義,后面緊跟函數(shù)的名稱。函數(shù)的參數(shù)放在英文半角的小括號中,Python函數(shù)可以有參數(shù),也可以沒有參數(shù)。在函數(shù)體中可以有1到多條語句,但Python的函數(shù)體不能沒有語句,如果暫時只是定義一個函數(shù)名稱,想在今后來實現(xiàn)它,可以使用pass語句。要注意Python函數(shù)的語法格式中,小括號后面要有一個英文半角的冒號,且函數(shù)體要進行縮進,在Python中使用縮進來表示語句的層級關(guān)系,讀者可以查看本站的文章《編寫第一個Python程序》中最后一段的說明。

二、函數(shù)的定義與調(diào)用

下面舉例說明Python中定義函數(shù)的方法與調(diào)用方法。

def hello():
    print("Hello,武林網(wǎng)VEVB")

def sum(x, y):
    return x + y

hello()  # 調(diào)用

# sum函數(shù)的參數(shù)直接給參數(shù)賦值
he = sum(10,20)
print(he)

# sum函數(shù)通過變量給參數(shù)賦值
a , b = 10, 20
print(sum(a, b))

上面定義了一個無參的函數(shù)hello和一個包含兩個參數(shù)的函數(shù)sum。hello()參數(shù)的作用是向控制臺輸出一行字符串。sum()函數(shù)的作用是返回兩個參數(shù)的和。

運行結(jié)果

Hello,武林網(wǎng)VEVB
30
30

三、定義帶默認值的函數(shù)

Python允許給函數(shù)的參數(shù)定義默認值,當調(diào)用函數(shù)時,若定義了默認值的參數(shù)沒有給傳值,則使用默認值。

def hello(nickname = '游客'):
    print("您好:", nickname)

#調(diào)用時沒有給參數(shù),則使用默認值
hello()
#調(diào)用時給了參數(shù),則使用參數(shù)指定的值
hello('武林網(wǎng)VEVB')

輸出結(jié)果:

您好: 游客
您好: 武林網(wǎng)VEVB

Python中參數(shù)的默認值必須位于所有未指定默認值參數(shù)的后邊,下面兩個函數(shù)的定義形式都是錯誤的:

# 錯誤的參數(shù)默認值,沒有默認值的參數(shù)不能位于有默認值參數(shù)的后面
def sum1(x = 1, y):  
    return x + y

def sum2(x, y = 1, z):
    return x + y + z

上面兩個函數(shù)的定義會給出如下錯誤:

non-default argument follows default argument

也就是:非默認值參數(shù)位于默認值參數(shù)的后面。也就是說在Python中,非默認值參數(shù)不能位于有默認值參數(shù)的后面

下面的形式是正確的:

def sum1(x, y = 1):
    return x + y

def sum2(x, y, z = 1):
    return x + y + z 

在給帶默認值的函數(shù)賦值時,傳遞的參數(shù)個數(shù)不能少于沒有默認值參數(shù)的個數(shù),如果函數(shù)中有多個默認值,且賦值時只想給某個帶默認值的參數(shù)賦值時,可以使用 參數(shù)名 = 值 的方式進行賦值,如下例所示:

def sum3(w, x, y = 0, z = 0):
    return w + x + y + z

sum = sum3(1, 2, z = 4)
print(sum)

上面這個例子在調(diào)用函數(shù)時,1 和 2 分別給了參數(shù)w和x,z = 4指定參數(shù)z的值是4,而y使用默認值0;如果調(diào)用時使用 sum3(1, 2, 4),則函數(shù)會把1, 2和4分別給了w,x和y,而z使用默認值0.

四、定義一個空函數(shù)

空函數(shù)指函數(shù)本身只有定義,但函數(shù)沒有具體的語句,什么也不做。由于Python不允許函數(shù)體為空的情況出現(xiàn),所以需要借助pass語句來實現(xiàn)。這與其它語言不一樣。

def myfun():
    pass

上面這個例子就定義了一個空函數(shù),當調(diào)用這個函數(shù)時,函數(shù)什么也不會做。這在實際中非常有用,比如有時我們知道程序中需要這個函數(shù)來處理一些事情,但具體算法還不清楚時,可以暫時這樣定義,等對算法本身有足夠認識時再給出函數(shù)的具體語句。

五、定義迭代函數(shù)

迭代函數(shù)指在函數(shù)體中調(diào)用自身的情況。這在許多算法中都非常有用,下面給出兩個例子來說明具體的實現(xiàn)方法:

1、編寫一個函數(shù)求 n!.

n!= n × (n-1) × (n-2) × ... × 2 × 1 = n × (n-1)!

如:5! = 5×4×3×2×1 = 120

實際上,這可以通過定義迭代函數(shù)來實現(xiàn)。

5! = 5×4!4! = 4×3!3! = 3×2!2! = 2×1!1! = 1

也就是說,要求5!,只需求5×4!,這里4!未知,則進一步求4!,以此類推,當推到1!時,1!=1,在一步一步將結(jié)果帶到上面的式子中,最終可以求出5!,即是一個往下推和回溯的過程。

具體實現(xiàn)代碼:

def fac(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * fac(n - 1)

n = 5
res = fac(n)
print(f'{n}! = {res}')

輸出結(jié)果:

5! = 120

2、求斐波那契數(shù)列的第n項的值

關(guān)于斐波那契數(shù)列,本站在前面有相關(guān)介紹,讀者可以參照這篇文章《python使用while循環(huán)輸出斐波那契數(shù)列》。

下面這個例子僅給出輸出第n項的代碼:

def fib(n):
    if n == 0 or n == 1:
        return 1
    else:
        return fib(n - 2) + fib(n - 1)

n = 20
iv = fib(n)
print(f'Fibonacci數(shù)列第{n}項的值是{iv}')

輸出結(jié)果:

Fibonacci數(shù)列第20項的值是10946

六、特別說明

 在Python中定義在類中的函數(shù)一般稱作方法(method),方法在調(diào)用時使用如下格式:

對象名.方法名(參數(shù)列表)

而非類中定義的才叫做函數(shù)(function),他們定義的形式是完全相同的,只不過調(diào)用形式有所不同。

本站前面講的很多字符串函數(shù)實際上屬于字符串類的方法

Python中自定義函數(shù)的方法

本文(完)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄色片网站在线免费观看 | 国产好片无限资源 | 黄色免费播放网站 | 国产小视频在线观看 | 国产精品毛片无码 | 亚洲日本韩国在线观看 | 亚洲aⅴ免费在线观看 | 黄片一级毛片 | 毛片一区二区三区四区 | 亚洲人片在线观看 | 久久精品av| 国产精品麻豆一区二区三区 | 亚洲精品 欧美 | 特片网久久 | 免费黄色欧美视频 | 国产亚洲高清视频 | 久久久久久久久久久亚洲 | 黄色羞羞视频在线观看 | 韩日黄色片 | 色网站在线免费观看 | 操碰 | 亚洲免费视频一区二区 | 毛片大全 | 视频一区二区中文字幕 | 国产91av视频 | 亚洲第一精品在线 | 轻点插视频 | 男女隐私免费视频 | 最近高清无吗免费看 | 久国久产久精永久网页 | av电影免费在线看 | 一级做受大片免费视频 | 久久久精品视频国产 | 国产免费一区视频 | chinese xxxx hd pron8 tube | 国产精品成人一区二区三区吃奶 | 久综合色 | 美女福利视频国产 | 日韩黄色免费在线观看 | 一区二区三级视频 | 久久99亚洲精品 |