1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        自學(xué)Python基礎(chǔ)知識(shí)匯總-第三節(jié)

        共 4774字,需瀏覽 10分鐘

         ·

        2021-03-12 23:19

        Python基礎(chǔ)07 函數(shù)

        函數(shù)最重要的目的是方便我們重復(fù)使用相同的一段程序。

        將一些操作隸屬于一個(gè)函數(shù),以后你想實(shí)現(xiàn)相同的操作的時(shí)候,只用調(diào)用函數(shù)名就可以,而不需要重復(fù)敲所有的語句。

         函數(shù)的定義

        首先,我們要定義一個(gè)函數(shù), 以說明這個(gè)函數(shù)的功能。

         square_sum(a,b):
            c = a**2 + b**2     c

        這個(gè)函數(shù)的功能是求兩個(gè)數(shù)的平方和。

        首先,def,這個(gè)關(guān)鍵字通知python:我在定義一個(gè)函數(shù)。square_sum是函數(shù)名。

        括號(hào)中的a, b是函數(shù)的參數(shù),是對函數(shù)的輸入。參數(shù)可以有多個(gè),也可以完全沒有(但括號(hào)要保留)。

        我們已經(jīng)在循環(huán)和選擇中見過冒號(hào)縮進(jìn)來表示的隸屬關(guān)系。

        c = a**2 + b**2        # 這一句是函數(shù)內(nèi)部進(jìn)行的運(yùn)算

        return c               # 返回c的值,也就是輸出的功能。Python的函數(shù)允許不返回值,也就是不用return。

        return可以返回多個(gè)值,以逗號(hào)分隔。相當(dāng)于返回一個(gè)tuple(定值表)。

        return a,b,c          # 相當(dāng)于 return (a,b,c)

         

        在Python中,當(dāng)程序執(zhí)行到return的時(shí)候,程序?qū)?span style="color: rgb(255, 0, 0);">停止執(zhí)行函數(shù)內(nèi)余下的語句。return并不是必須的,當(dāng)沒有return, 或者return后面沒有返回值時(shí),函數(shù)將自動(dòng)返回None。None是Python中的一個(gè)特別的數(shù)據(jù)類型,用來表示什么都沒有,相當(dāng)于C中的NULL。None多用于關(guān)鍵字參數(shù)傳遞的默認(rèn)值。

         函數(shù)調(diào)用和參數(shù)傳遞

        定義過函數(shù)后,就可以在后面程序中使用這一函數(shù)

        print square_sum(3,4)

        Python通過位置,知道3對應(yīng)的是函數(shù)定義中的第一個(gè)參數(shù)a, 4對應(yīng)第二個(gè)參數(shù)b,然后把參數(shù)傳遞給函數(shù)square_sum。

        (Python有豐富的參數(shù)傳遞方式,還有關(guān)鍵字傳遞、表傳遞、字典傳遞等,基礎(chǔ)教程將只涉及位置傳遞)

        函數(shù)經(jīng)過運(yùn)算,返回值25, 這個(gè)25被print打印出來。

         我們再看下面兩個(gè)例子


        第一個(gè)例子,我們將一個(gè)整數(shù)變量傳遞給函數(shù),函數(shù)對它進(jìn)行操作,但原整數(shù)變量a不發(fā)生變化

        第二個(gè)例子,我們將一個(gè)表傳遞給函數(shù),函數(shù)進(jìn)行操作,原來的表b發(fā)生變化。

        對于基本數(shù)據(jù)類型的變量,變量傳遞給函數(shù)后,函數(shù)會(huì)在內(nèi)存中復(fù)制一個(gè)新的變量,從而不影響原來的變量。(我們稱此為值傳遞

        但是對于表來說,表傳遞給函數(shù)的是一個(gè)指針,指針指向序列在內(nèi)存中的位置,在函數(shù)中對表的操作將在原有內(nèi)存中進(jìn)行,從而影響原有變量。(我們稱此為指針傳遞

        Python基礎(chǔ)09 面向?qū)ο蟮倪M(jìn)一步拓展


        調(diào)用類的其它信息

        上一講中提到,在定義方法時(shí),必須有self這一參數(shù)。這個(gè)參數(shù)表示某個(gè)對象。對象擁有類的所有性質(zhì),那么我們可以通過self,調(diào)用類屬性。

        這里有一個(gè)類屬性laugh。在方法show_laugh()中,通過self.laugh,調(diào)用了該屬性的值。

         還可以用相同的方式調(diào)用其它方法。方法show_laugh(),在方法laugh_100th中()被調(diào)用。

         通過對象可以修改類屬性值。但這是危險(xiǎn)的。類屬性被所有同一類及其子類的對象共享。類屬性值的改變會(huì)影響所有的對象。

        __init__()方法

        __init__()是一個(gè)特殊方法(special method)。Python有一些特殊方法。Python會(huì)特殊的對待它們。特殊方法的特點(diǎn)是名字前后有兩個(gè)下劃線。

        如果你在類中定義了__init__()這個(gè)方法,創(chuàng)建對象時(shí),Python會(huì)自動(dòng)調(diào)用這個(gè)方法。這個(gè)過程也叫初始化

        這里繼承了Bird類,它的定義見上一講。

         

        屏幕上打?。?/p>

        We are happy birds.Happy,Happy!

        我們看到,盡管我們只是創(chuàng)建了summer對象,但__init__()方法被自動(dòng)調(diào)用了。最后一行的語句(summer = happyBird...)先創(chuàng)建了對象,然后執(zhí)行:

        summer.__init__(more_words)

        'Happy,Happy!' 被傳遞給了__init__()的參數(shù)more_words

         

        對象的性質(zhì)

        我們講到了許多屬性,但這些屬性是類的屬性。所有屬于該類的對象會(huì)共享這些屬性。比如說,鳥都有羽毛,雞都不會(huì)飛。

        在一些情況下,我們定義對象的性質(zhì),用于記錄該對象的特別信息。比如說,人這個(gè)類。性別是某個(gè)人的一個(gè)性質(zhì),不是所有的人類都是男,或者都是女。這個(gè)性質(zhì)的值隨著對象的不同而不同。李雷是人類的一個(gè)對象,性別是男;韓美美也是人類的一個(gè)對象,性別是女。

         

        當(dāng)定義類的方法時(shí),必須要傳遞一個(gè)self的參數(shù)。這個(gè)參數(shù)指代的就是類的一個(gè)對象。我們可以通過操縱self,來修改某個(gè)對象的性質(zhì)。比如用類來新建一個(gè)對象,即下面例子中的li_lei, 那么li_lei就被self表示。我們通過賦值給self.attribute,給li_lei這一對象增加一些性質(zhì),比如說性別的男女。self會(huì)傳遞給各個(gè)方法。在方法內(nèi)部,可以通過引用self.attribute,查詢或修改對象的性質(zhì)。

        這樣,在屬性的之外,又給每個(gè)對象增添了各自特色的性質(zhì),從而能描述多樣的世界。

        在初始化中,將參數(shù)input_gender,賦值給對象的性質(zhì),即self.gender。

        li_lei擁有了對象性質(zhì)gender。gender不是一個(gè)類屬性。Python在建立了li_lei這一對象之后,使用li_lei.gender這一對象性質(zhì),專門儲(chǔ)存屬于對象li_lei的特有信息。

         

        對象的性質(zhì)也可以被其它方法調(diào)用,調(diào)用方法與類屬性的調(diào)用相似,正如在printGender()方法中的調(diào)用。

        Python基礎(chǔ)10 反過頭來看看

        最初的“Hello World”,走到面向?qū)ο?。該回過頭來看看,教程中是否遺漏了什么。

        我們之前提到一句話,"Everything is Object". 那么我們就深入體驗(yàn)一下這句話。

         

        需要先要介紹兩個(gè)內(nèi)置函數(shù),dir()help()

        dir()用來查詢一個(gè)類或者對象所有屬性。你可以嘗試一下

        >>>print dir(list)

        help()用來查詢的說明文檔。你可以嘗試一下

        >>>print help(list)

        (list是Python內(nèi)置的一個(gè)類,對應(yīng)于我們之前講解過的列表)

        list是一個(gè)類

        在上面以及看到,表是Python已經(jīng)定義好的一個(gè)類。當(dāng)我們新建一個(gè)表時(shí),比如:

        >>>nl = [1,2,5,3,5]

        實(shí)際上,nl是類list的一個(gè)對象。

         

        實(shí)驗(yàn)一些list的方法:

        >>>print nl.count(5)       # 計(jì)數(shù),看總共有多少個(gè)5

        >>>print nl.index(3)       # 查詢 nl 的第一個(gè)3的下標(biāo)

        >>>nl.append(6)            # 在 nl 的最后增添一個(gè)新元素6

        >>>nl.sort()               # 對nl的元素排序

        >>>print nl.pop()          # 從nl中去除最后一個(gè)元素,并將該元素返回。

        >>>nl.remove(2)            # 從nl中去除第一個(gè)2

        >>>nl.insert(0,9)          # 在下標(biāo)為0的位置插入9

        總之,list是一個(gè)類。每個(gè)列表都屬于該類。

        Python補(bǔ)充中有l(wèi)ist常用方法的附錄。

        運(yùn)算符是特殊方法

        使用dir(list)的時(shí)候,能看到一個(gè)屬性,是__add__()。從形式上看是特殊方法(下劃線,下劃線)。它特殊在哪呢?

        這個(gè)方法定義了"+"運(yùn)算符對于list對象的意義,兩個(gè)list的對象相加時(shí),會(huì)進(jìn)行的操作。

        >>>print [1,2,3] + [5,6,9]

         

        運(yùn)算符,比如+, -, >, <, 以及下標(biāo)引用[start:end]等等,從根本上都是定義在類內(nèi)部的方法。

         

        嘗試一下

        >>>print [1,2,3] - [3,4]

        會(huì)有錯(cuò)誤信息,說明該運(yùn)算符“-”沒有定義。現(xiàn)在我們繼承l(wèi)ist類,添加對"-"的定義

        內(nèi)置函數(shù)len()用來返回list所包含的元素的總數(shù)。內(nèi)置函數(shù)__sub__()定義了“-”的操作:從第一個(gè)表中去掉第二個(gè)表中出現(xiàn)的元素。如果__sub__()已經(jīng)在父類中定義,你又在子類中定義了,那么子類的對象會(huì)參考子類的定義,而不會(huì)載入父類的定義。任何其他的屬性也是這樣。

        (教程最后也會(huì)給出一個(gè)特殊方法的清單)

         

        定義運(yùn)算符對于復(fù)雜的對象非常有用。舉例來說,人類有多個(gè)屬性,比如姓名,年齡和身高。我們可以把人類的比較(>, <, =)定義成只看年齡。這樣就可以根據(jù)自己的目的,將原本不存在的運(yùn)算增加在對象上了。

        下一步

        希望你已經(jīng)對Python有了一個(gè)基本了解。你可能躍躍欲試,要寫一些程序練習(xí)一下。這會(huì)對你很有好處。

        但是,Python的強(qiáng)大很大一部分原因在于,它提供有很多已經(jīng)寫好的,可以現(xiàn)成用的對象。我們已經(jīng)看到了內(nèi)置的比如說list,還有tuple等等。它們用起來很方便。在Python的標(biāo)準(zhǔn)庫里,還有大量可以用于操作系統(tǒng)互動(dòng),Internet開發(fā),多線程,文本處理的對象。而在所有的這些的這些的基礎(chǔ)上,又有很多外部的庫包,定義了更豐富的對象,比如numpy, tkinter, django等用于科學(xué)計(jì)算,GUI開發(fā),web開發(fā)的庫,定義了各種各樣的對象。對于一般用戶來說,使用這些庫,要比自己去從頭開始容易得多。我們要開始攀登巨人的肩膀了。

        謝謝你的關(guān)注,

        歡迎來到Python的世界。



        掃一掃關(guān)注我們,
        更多咨詢早知道!




        瀏覽 74
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日皮视频免费观看 | 国产亚洲AV片天天在线观看 | www.日批 | 欧美骚比网 | 真人看一级毛片 | 黄色污污视频网站 | 韩国三级视频在线 | 成人片色情免费观看网站一级 | 污视频免费在线观看 | 中国老太婆一级A片免费 |