国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

python基礎(chǔ)教程:函數(shù),函數(shù),函數(shù),重要的事說(shuō)三遍

dreamtecher / 688人閱讀

摘要:調(diào)用函數(shù)就是通過(guò)函數(shù)名再傳入它需要的參數(shù)即可。遞歸函數(shù)遞歸函數(shù)就是函數(shù)自己調(diào)用自己。我們以計(jì)算一個(gè)整數(shù)的階乘來(lái)看看遞歸函數(shù)是什么樣子的。階乘的公式如下它的遞歸函數(shù)的定義如下遞歸函數(shù)都有一個(gè)跳出遞歸的條件,在本函數(shù)中就是。

函數(shù),是編程中很重要的一個(gè)概念。簡(jiǎn)單來(lái)說(shuō),函數(shù)是一段可重復(fù)使用的代碼段,給這段代碼起個(gè)名字就是“函數(shù)名”。在程序的任何地方都可以通過(guò)函數(shù)名來(lái)使用這段代碼,這就是“函數(shù)調(diào)用”。

函數(shù)的定義

函數(shù)的概念,其實(shí)我們?cè)诔踔袛?shù)學(xué)中就接觸過(guò)了。比如,這個(gè)表達(dá)式y = 2x + 3,我們就稱(chēng)y是x的一次函數(shù)。寫(xiě)成Python函數(shù)就是這樣的:

def y(x):
    return 2 * x + 3

如上例所示,Python中定義一個(gè)函數(shù)的規(guī)則是這樣的:

首先是通過(guò)關(guān)鍵字def來(lái)確定它是一個(gè)函數(shù),后面跟著函數(shù)名(比如上面的y),函數(shù)名后面是小括號(hào)括起來(lái)的參數(shù),括號(hào)外面以冒號(hào):結(jié)尾這一行。這一行就是函數(shù)的聲明。

接下來(lái)是函數(shù)體的代碼片段,可以是一行也可以是多行,但它們比def多了一個(gè)縮進(jìn)。函數(shù)體最后一行可以通過(guò)關(guān)鍵字return返回一個(gè)或多個(gè)值。如果沒(méi)有寫(xiě)return,Python默認(rèn)為返回None

有一種特殊的函數(shù)定義:空函數(shù),就是什么都不做的函數(shù),它通過(guò)一個(gè)pass語(yǔ)句來(lái)定義函數(shù)體:

def do_nothing():
    pass

空函數(shù)主要是在我們寫(xiě)程序最開(kāi)始,想好都有哪些函數(shù)要寫(xiě),先定義成空函數(shù)再慢慢實(shí)現(xiàn)它們具體的功能。

同樣的,后面我們學(xué)習(xí)Python面向?qū)ο缶幊虝r(shí)類(lèi)(class)的定義也可以用pass來(lái)實(shí)現(xiàn)一個(gè)最小類(lèi):

class TheEmptyClass:
    pass
函數(shù)的調(diào)用

定義好一個(gè)函數(shù)后,我們就可以調(diào)用(運(yùn)行)該函數(shù)了。調(diào)用函數(shù)就是通過(guò)函數(shù)名再傳入它需要的參數(shù)即可。

a = y(2)
print("a is ", a)

b = y(6)
print("b is ", b)

結(jié)合函數(shù)y的定義,猜猜看a和b的值分別為多少吧。

函數(shù)y是一個(gè)數(shù)學(xué)運(yùn)算的函數(shù),它的參數(shù)應(yīng)該是整數(shù)或浮點(diǎn)數(shù)。如果我們給它傳一個(gè)字符串進(jìn)去,看看會(huì)有什么結(jié)果呢?

In [153]: y("a")
-----------------
TypeError        Traceback (most recent call last)
 in 
----> 1 y("a")

 in y(x)
      1 def y(x):
----> 2     return 2 * x + 3
      3 

TypeError: must be str, not int

根據(jù)函數(shù)體的語(yǔ)句,我們先把字符串"a"乘以2得到"aa",再計(jì)算"aa"字符串和整數(shù)3的加法就會(huì)報(bào)錯(cuò),因?yàn)樽址驼麛?shù)是不能做加法運(yùn)算的。

我們定義的函數(shù)y只有一個(gè)參數(shù),如果我們給它傳入兩個(gè)或更多參數(shù),同樣也會(huì)報(bào)錯(cuò)。小猿們可以自己試試看參數(shù)個(gè)數(shù)不對(duì)時(shí)是什么樣的錯(cuò)誤。

因此,函數(shù)的調(diào)用,需要滿(mǎn)足函數(shù)名、參數(shù)類(lèi)型、參數(shù)個(gè)數(shù)都要符合函數(shù)的定義才能運(yùn)行成功。

函數(shù)的返回值

在Python中函數(shù)都是有返回值的。如果我們沒(méi)有通過(guò)return顯示的返回,則Python默認(rèn)返回None。通過(guò)return我們就可以規(guī)定函數(shù)返回我們想要的值。我們想要的值可能是一個(gè),也可能是兩個(gè)或多個(gè),return都能滿(mǎn)足我們的要求。

def my_division(a, b):
    quotient = a // b
    remainder = a % b
    return quotient, remainder

這個(gè)函數(shù)計(jì)算a除以b,返回它們的商和余數(shù)兩個(gè)值。return返回多個(gè)值時(shí),用逗號(hào),隔開(kāi)它們即可。
我們看看調(diào)用該函數(shù)運(yùn)行的結(jié)果:

In [158]: my_division(5, 2)
Out[158]: (2, 1)

In [159]: my_division(20, 7)
Out[159]: (2, 6)

In [160]: my_division(20, 5)
Out[160]: (4, 0)

可以看到,函數(shù)返回多個(gè)值時(shí),這多個(gè)值組成了一個(gè)tuple(元組)。

遞歸函數(shù)

遞歸函數(shù)就是函數(shù)自己調(diào)用自己。我們以計(jì)算一個(gè)整數(shù)的階乘來(lái)看看遞歸函數(shù)是什么樣子的。階乘的公式如下:
n! = n (n-1) (n-2) 2 * 1

它的遞歸函數(shù)的定義如下:

def factorial(n):
    if n == 1:
        print(n)
        return 1
    print(n, "*", end=" ")
    return n * factorial(n-1)

遞歸函數(shù)都有一個(gè)跳出遞歸的條件,在本函數(shù)中就是n == 1。當(dāng)n != 1時(shí)就遞歸調(diào)用求比當(dāng)前n小1的數(shù)的階乘,每次n減1,知道n == 1結(jié)束遞歸。這個(gè)遞歸過(guò)程其實(shí)就是生成了連乘(可以看函數(shù)的打印信息):
n (n-1) (n-2) 2 * 1

In [169]: f = factorial(5)
5 * 4 * 3 * 2 * 1

In [170]: f = factorial(10)
10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
總結(jié)

定義函數(shù)的要素:函數(shù)名、參數(shù)、函數(shù)體
調(diào)用函數(shù)的注意事項(xiàng):參數(shù)類(lèi)型、參數(shù)個(gè)數(shù)
函數(shù)體最后沒(méi)有使用return語(yǔ)句則默認(rèn)返回None
函數(shù)通過(guò)return返回一個(gè)或多個(gè)值,多個(gè)值以tuple的形式返回

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/43768.html

相關(guān)文章

  • Python每日小知識(shí)(3):list和tuple的使用

    摘要:同樣的用上節(jié)講的函數(shù)獲取元素的個(gè)數(shù)記住這是獲取的是列表個(gè)數(shù)個(gè)數(shù)個(gè)數(shù)重要的事說(shuō)三遍。用索引訪(fǎng)問(wèn)每個(gè)元素的位置,索引是從開(kāi)始的開(kāi)始的開(kāi)始的索引也是有容忍限度的超過(guò)了就會(huì)原地爆炸報(bào)錯(cuò)如果列表中元素個(gè)數(shù)賊多,想獲取后面的元素就要實(shí)行曲線(xiàn)救國(guó)了。 list和tuple是Python內(nèi)置的有序集合,一個(gè)是可變的,一個(gè)是不可變滴;這都不是事,主要是理解一下指向不變。 看圖說(shuō)話(huà): showImg(ht...

    SoapEye 評(píng)論0 收藏0
  • this全面解析(一)

    摘要:調(diào)用棧就是為了到達(dá)當(dāng)前執(zhí)行位置所調(diào)用的所有函數(shù)。由于無(wú)法控制回調(diào)函數(shù)的執(zhí)行方式,因此就沒(méi)有辦法控制調(diào)用位置得到期望的綁定,下一節(jié)我們會(huì)介紹如何通過(guò)固定來(lái)修復(fù)這個(gè)問(wèn)題。 在《你不知道的this》中我們排除了對(duì)于this的錯(cuò)誤理解,并且明白了每個(gè)函數(shù)的this是在調(diào)用時(shí)綁定的,完全取決于函數(shù)的調(diào)用位置。在本節(jié)中我們主要介紹一下幾個(gè)主要內(nèi)容: 什么是調(diào)用位置 綁定規(guī)則 this詞法 調(diào)用...

    darry 評(píng)論0 收藏0
  • 正在暑假中的《課多周刊》(第1期)

    摘要:正在暑假中的課多周刊第期我們的微信公眾號(hào),更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。若有幫助,請(qǐng)把課多周刊推薦給你的朋友,你的支持是我們最大的動(dòng)力。原理微信熱更新方案漲知識(shí)了,熱更新是以后的標(biāo)配。 正在暑假中的《課多周刊》(第1期) 我們的微信公眾號(hào):fed-talk,更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。 若有幫助,請(qǐng)把 課多周刊 推薦給你的朋友,你的支持是我們最大的動(dòng)力。 遠(yuǎn)上寒山石徑...

    liukai90 評(píng)論0 收藏0
  • 正在暑假中的《課多周刊》(第1期)

    摘要:正在暑假中的課多周刊第期我們的微信公眾號(hào),更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。若有幫助,請(qǐng)把課多周刊推薦給你的朋友,你的支持是我們最大的動(dòng)力。原理微信熱更新方案漲知識(shí)了,熱更新是以后的標(biāo)配。 正在暑假中的《課多周刊》(第1期) 我們的微信公眾號(hào):fed-talk,更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。 若有幫助,請(qǐng)把 課多周刊 推薦給你的朋友,你的支持是我們最大的動(dòng)力。 遠(yuǎn)上寒山石徑...

    yintaolaowanzi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<