<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          輕松學(xué)會(huì)面向?qū)ο蟮?篇---類可以準(zhǔn)確描述數(shù)據(jù)內(nèi)容

          共 2175字,需瀏覽 5分鐘

           ·

          2021-03-13 03:38

          封裝,是面向?qū)ο笕筇匦灾唬覍⑵浞纸鉃槿齻€(gè)方面:

          1. 對(duì)數(shù)據(jù)內(nèi)容的準(zhǔn)確描述

          2. 對(duì)數(shù)據(jù)之間關(guān)系的形象描述

          3. 對(duì)數(shù)據(jù)行為的規(guī)范和約定

          接下來幾篇文章將重點(diǎn)講解封裝

          1. 程序員真的不善于溝通么?

          沒有人會(huì)否定溝通的重要性,在工作當(dāng)中,我們需要與其他人進(jìn)行協(xié)作,才能順利的完成工作內(nèi)容,能做領(lǐng)導(dǎo)的,一定具備很好的溝通能力,否則,工作難以開展。

          在人們眼中,程序員是一群相對(duì)比較沉默的群體,甚至是有些木訥,給人一種不善交流溝通的印象。

          這種評(píng)價(jià)正確么?我認(rèn)為,要分開來看,程序員和程序員群體以外的人溝通,確實(shí)存在一些阻礙和困難,但在程序員群體內(nèi)部,溝通,大多數(shù)時(shí)候都是極為順暢的,因?yàn)檫@兩種情況下溝通的語言不通。

          在與其他程序員溝通時(shí),我們使用的是專業(yè)用語,或口頭,或書面,如果用代碼,甚至一句話都不需要講。

          2. 準(zhǔn)確描述數(shù)據(jù)的內(nèi)容

          在一個(gè)系統(tǒng)里,有很多數(shù)據(jù)需要處理,每個(gè)人負(fù)責(zé)一定的模塊,數(shù)據(jù)在不同的模塊之間流轉(zhuǎn),即便不考慮數(shù)據(jù)的流轉(zhuǎn),維護(hù)你代碼的人也需要知道你所處理的數(shù)據(jù)是如何定義的。

          假設(shè)一個(gè)系統(tǒng)里,要處理學(xué)生的數(shù)據(jù),計(jì)算學(xué)生的考試總分,學(xué)生的數(shù)據(jù)是一個(gè)模糊的概念,都有什么呢,接下來,我用3種方式來描述數(shù)據(jù)

          2.1 文字描述

          學(xué)生信息包括姓名,語文分?jǐn)?shù),數(shù)學(xué)分?jǐn)?shù)。

          清楚了么?好像是清楚了,但對(duì)編程來說,還遠(yuǎn)遠(yuǎn)不夠,這些信息可以存儲(chǔ)在列表里,也可以存儲(chǔ)在元組里,還可以存儲(chǔ)在字符串里

          stu1 = ['小明', 90, 99]
          stu2 = ('小明', 90, 99)
          stu3 = '小明_90_99'

          當(dāng)文字描述轉(zhuǎn)換為代碼時(shí),有多種形式,其他人不可能通過你的文字描述來知曉代碼里的表達(dá)方式,因此,程序員之間不用這種溝通方式。

          2.2 用字典描述

          stu_dict = {
          'name': '小明',
          'score': {
          '語文': 90,
          '數(shù)學(xué)': 99
          },
          }

          用字典來描述,比起列表,元組,字符串要好的多了,它能相對(duì)準(zhǔn)確的描述出數(shù)據(jù)內(nèi)容以及嵌套關(guān)系,事實(shí)上,程序員也是這么做的。

          在web系統(tǒng)里,你需要為你負(fù)責(zé)的API接口提供說明文檔,介紹接口的訪問方式,提供請求示例和返回示例,請求與返回示例就是用類似于字典的json數(shù)據(jù)來說明的。

          這種方法有一定的適用范圍,溝通交流并不只是發(fā)生在API接口上,在系統(tǒng)內(nèi)部,每一個(gè)有參數(shù)的函數(shù)都可以視為一個(gè)接口,你不可能為每一個(gè)函數(shù)的參數(shù)都寫一份說明文檔,告知其他人數(shù)據(jù)的形式和內(nèi)容。

          2.3 用類描述

          class Student():
          def __init__(self, name, yw_score, sx_score):
          self.name = name # 姓名
          self.yw_score = yw_score # 語文分?jǐn)?shù)
          self.sx_score = sx_score # 數(shù)學(xué)分?jǐn)?shù)

          使用類,準(zhǔn)確的對(duì)數(shù)據(jù)的內(nèi)容進(jìn)行了描述,這非常非常關(guān)鍵,假設(shè)你是一個(gè)項(xiàng)目組的組長,負(fù)責(zé)分配工作任務(wù),你將計(jì)算學(xué)生總分的函數(shù)sum_score分配給小剛來編寫,你只需要提供一個(gè)函數(shù)定義即可:

          def sum_score(student: Student)->int:
          """
          計(jì)算學(xué)生考試總分?jǐn)?shù)
          :param student: Student
          :return:
          """

          pass

          從py3.5開始,引入了類型系統(tǒng),允許你指定變量類型。小剛拿到這個(gè)尚未完成的函數(shù)以后,它需要知道參數(shù)student的內(nèi)容,怎么辦呢,他只需要按圖索驥,找到類Student的定義就可以了。

          類是你寫的,他事先并不知道類的定義,但他只要讓看到類的定義,就知道該如何進(jìn)行計(jì)算,函數(shù)實(shí)現(xiàn)如下

          def sum_score(student: Student)->int:
          """
          計(jì)算學(xué)生考試總分?jǐn)?shù)
          :param student: Student
          :return:
          """

          return student.yw_score + student.sx_score

          這個(gè)過程中,你和他之間不需要對(duì)參數(shù)student進(jìn)行任何語言和文字上的溝通,他自己就能搞清楚。這么看來,程序員之間的溝通還真是高效啊。

          3. 類型標(biāo)注

          類型系統(tǒng)是python3.5以后引入的,它不是強(qiáng)制性的要求,python依然是動(dòng)態(tài)類型語言,即便將student標(biāo)注為Student類,你依然可以在調(diào)用函數(shù)時(shí)傳入其他類型的對(duì)象。

          我個(gè)人十分喜歡python的這一變化,動(dòng)態(tài)類型語言不善于構(gòu)建大型項(xiàng)目,無法追查變量類型是原因之一。

          在缺少類型提示的情況下,動(dòng)態(tài)類型語言編寫出的代碼隨著體量的增加,逐漸變得難以維護(hù),尤其在各種語言特性加持下,非凡人能夠理解。

          這無疑減弱了類在描述數(shù)據(jù)內(nèi)容上的能力,增加了溝通維護(hù)的成本。引入類型標(biāo)注后,python在構(gòu)建大型系統(tǒng)方面的能力一定會(huì)得到增強(qiáng)。

          瀏覽 39
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人人操日日操 | 五月丁香福利 | 成人看片黄a免费看视频 | 大屌狠狠操| 免费国产精品视频 |