一文提升你的Python能力——定義模塊、說明模塊和測試模塊

2021-01-13 品位集結號

上次和大家探討了關於Python模塊化編程的東東,可能大家會問了:我已經了解了Python模塊化編程的精髓了,但是我能不能自己定義模塊呢?

先說答案,答案是當然能哈~

下面就和大家探討一下關於定義模塊、說明模塊和測試模塊相關的東東,那我們就開始吧!

首先,說一下:定義模塊

首先來個靈魂拷問問題?模塊到底是啥呢?該怎麼定義自己的模塊呢?

模塊呀,當然就是Python程序了,到這可能你會說「廢話」,這還真不是廢話哈,因為所有的Python程序都可以作為模塊進行導入哦,也就是說,你隨便寫個Python程序,統統都可以作為模塊導入,並且只要你導入了模塊,你就可以肆無忌憚的使用該模塊內的所有成員了哦。

下面舉個「慄子」:

先對這個「慄子」簡單說明一下吧,在該「慄子」中呢,第1行執行了一條簡單的輸出語句哦,然後第3行定義了一個變量,然後又定義了一個say_hello()函數,最後定義了一個Friend類。到這你有木有發現呢?這和普通的Python程序木有啥區別哦,你的發現是對的哦,但這仍然可以作為模塊來導入哦。

到這可能大家又有問題了:那使用模塊有啥好處呢?好處當然有了,比如說像上面「慄子」中的代碼一樣,將需要使用的一些單元東東定義在模塊中,那麼在日後使用時不管哪個程序只要導入了這個模塊,這個程序就可以使用這個模塊中的所有東東了哦,這就是常說的復用,對於大工程開發的好處是大大滴,而且呢,使模塊,你還能避免每個程序都需要重新定義這些模塊中的東東的坑哦。

再補充一句:其實呢,模塊文件的文件名就是模塊名哦,比如上面「慄子」module1.py的模塊名就是module1哦。

好啦,說明白了定義模塊,下面就說一下說明模塊吧!

說明模塊

啥叫說明模塊呢?又是靈魂拷問哈?說明模塊說白了就是給模塊添加說明語言(文檔)哦!

因為在實際的工程開發,尤其是在大項目中,整個項目是由一個團隊共同完成的哦,每個人可能負責不能的東東,這時就需要為模塊編寫說明文檔了哦,因為如果木有說明文檔,你團隊中的其他成員看你的代碼可能就是一臉懵逼哦!

那該怎樣為模塊添加說明文檔呢?其實呢,還是挺簡單滴,你只有在模塊開始處定義一個字符串直接量就可以了哦。

還是舉個「慄子」吧:

上面「慄子」中紅色方框中的這段話就是為模塊添加的說明東東哦!

最後補充一句:對於這個說明的話,你可以通過模塊的__doc__屬性來訪問文檔哦。

好了,到此你已經會定義模塊並會為模塊添加說明文檔了,但是人非聖賢,誰能保證自己寫的「碼子」完全正確呢,這時就要凸顯測試模塊的重要性了,那該怎麼對模塊進行測試呢?不要著急哦,下面告訴大家!

測試模塊

測試模塊就是給模塊添加一些測試代碼的東東!通過測試後,你才能保證你所寫的模塊中的每個單元東東都正確哦!

前面已經說了哦,模塊呢,就是Python代碼,因此呀,我們可以使用Python命令來解釋並執行這些模塊程序哦,但是呢,條件還是有的,就是你的模塊中必須包含可執行的代碼!

比如上面的「慄子」,如果你用pythong module1.py運行,就只執行print(『俺是模塊哦』)這一句,這就尷尬了哦,因為模塊中你所定義的函數呀、類呀都木有測試到哦。

那該怎麼搞呢?你可能會用下面的方法:

到這你可能慢慢的成就感,但是呢,這有問題的,因為如果你這個模塊被其他程序導入使用時,你所編寫的這三個測試函數都會自動執行,這顯然不是你期望的效果哦,是不是到這有點「捉急」了呢?要相信Python哦,不然Python就不會這麼火爆了!

其實呢,對於模塊的測試完全可以藉助所有的模塊內置的__name__變量進行區分哦,因為假如直接使用python命令來運行一個模塊,那麼__name__變量的值就是__main__;還有假如哦,假如這個模塊中被導入到其他程序中了,那麼__name__變量的值就是模塊名哦。

好了,到此答案就出來了,就是如果你希望測試函數只有在使用python命令直接運行時才執行,那麼你就可以在測試函數中增加判斷了哦,就是說只有當__name__屬性為__main__時才調用測試函數哦。

將上面「慄子」中的測試代碼改為如下「正規軍」風格:

最後運行一下看一下效果吧,效果如下:

敬請關注「品位集結號」,為您帶來最新的小知識!

相關焦點

  • NB-IOT模塊實戰測試
    模塊選型NB模塊現在在市場上可選擇的種類並不多,不像GPRS模塊那樣百花齊放,資料也少的可憐,常見的有SIMcom的SIM700系列,中興的ME系列,移遠的BC系列等。這裡演示的是一款移遠的模塊BC26,基於MTK平臺的解決方案,支持TCP,UDP,MQTT,LWM2M等協議。
  • 碳化矽功率模塊及電控的設計、測試與系統評估
    經過一系列的系統分析,我們驗證了晶片並聯數量過多,不會對續航裡程進一步提升有過多幫助,而只能提升該車的最大加速度;晶片數量過少,貌似模塊成本降低,但也可能失去效率/經濟優勢——尤其是考慮碳化矽晶片的正溫度係數後。
  • 電口模塊和普通光模塊的區別有哪些?
    在說明電口模塊和普通光模塊的區別之前,易天光通信(ETU-LINK)帶大家先了解下什麼是電口模塊以及普通光模塊。其實電口模塊是將光口轉為電口的模塊,作用是把光信號轉換成電信號,其接口類型為RJ45。 光轉電模塊是一種支持熱插拔的模塊,封裝類型有SFP、SFP+、GBIC等。
  • 乾貨分享:一文看懂光模塊
    將QSFP的4通道增加了一排通道,變為了8通道。它可以與QSFP方案兼容,原先的QSFP28模塊仍可以使用,只需再插入一個模塊即可。QSFP-DD的電口金手指數量是QSFP28的2倍。NRZ和PAM4PAM4(4 Pulse Amplitude Modulation)是一個「翻倍」技術。對於光模塊來說,如果想要實現速率提升,要麼增加通道數量,要麼提高單通道的速率。
  • 你還用笨方法查看Python模塊含有的內容嗎?一文教你扔掉它
    其實呢,dir()函數時Python定義的函數,可以直接拿來調用的哦,這個dir()函數調用後,它可以給你返回模塊或者類中所包含滴全部東東哦,這些東東有你想知道的變量、函數、類或者方法等等等等。好啦,為了能夠讓大家理解滴更深刻,咱們還是老習慣嘍,舉個「慄子」:比如咱們看看Python內置定義和封裝的string模塊的東東,首先你要先把這個string模塊導入哦:看到了嗎,當你將string模塊導入後,然後調用dir(string)函數,就可以將string模塊中的東東以列表的形式列出哦,到這可能大家已經注意到啦,就是string模塊中有好多帶「__」開頭的東東,
  • PLC模擬量模塊與數字量模塊怎麼區別
    在工控系統中,PLC的使用率越來越多,PLC能夠完成的功能也是越來越多,越來越高級,那麼組成PLC系統中的數字量輸入模塊和數字量輸出模塊是幹什麼的? 一套完整的PLC系統組成 我們知道,組成PLC應包含CPU模塊及輸入輸出模塊,若是還需要完成其他的運動功能,或者通訊功能,還應該增加運動模塊和通訊模塊,當然還應該包括必要的設備電源,這樣我們才構成了一個完整的PLC系統,在實際的工程項目中,我們要按照設計的要求進行模塊的選擇,根據系統的大小選擇不同類型的PLC。
  • 電商首頁的模塊布局
    文/張朦朦 在電商首頁的設計中,常會將頁面分拆成一個個模塊,做好之後再拼合成整個頁面,使首頁看起來層次分明、架構明顯。首頁布局就是有目的的展示一些商品,並讓顧客能夠快速的找到商品,並完成電商形象的傳遞和營銷的目的。①形象展示。產品品牌是區別產品的重要標誌之一,當顧客進入首頁感受到這些差異並能夠與其他首頁有所區別,從而形成認知上的區分和對品牌的信任感。
  • 一文提升你的編程能力,全面理解Python包的導入,拿走不謝
    上次和大家一起聊了Python包的定義,相信大家已經對於這個小知識點已經精通啦,理解了包的定義,那接下來是不是該了解一下該怎麼使用Python包了哦!好啦,下面咱們就開始聊聊Python包的導入相關的東東吧!為了讓大家對上次咱們所聊的包的定義有更深入的理解,咱們就來玩個複雜一丟丟的包吧!
  • 第38p,繼續講,模塊與包的調用
    一、模塊存在的4種形式 1、以.py形式存在的文件,這是使用Python語言編寫的.py文件; 2、以點 註:第2和第4是已經編譯好或已經寫好的模塊,我們只需調用即可;第1和第3條是我們使用最多的情況,因為我們經常要自定義模塊。
  • 重裝上陣:五種移動模塊的性能測試,看看哪種跑得快又適合你
    不過對於很多才玩這款遊戲的萌新,就比較的惱火了,因為很多模塊的功能都不知道,只有靠實戰才能夠徹底摸清模塊的各項性能!本期為大家帶來的內容就是給各位測試下移動模塊的性能!感興趣的朋友,可不要錯過哦!大家好!我是遊戲玩不厭,有時瞎扯淡的遊戲H星!
  • 一分鐘了解什麼是50G光模塊
    50GE標準即50Gbps的乙太網標準,50G光模塊指傳輸速率為50Gbps/s的光模塊。作為10/100G乙太網絡連接標準的重要銜接者,50Gbps每通道技術將是未來400Gbps(8*50Gbps)乙太網標準的基礎。業界普遍希望利用這一傳輸速率來替代現有的10Gbps速率。
  • 你會使用視覺模塊嗎?
    除此之外,它還支持10s高速學習,只需輕鬆按下板載按鈕,最快10S即可完成學習,同時還能確保識別的準確性,是一款非常適合人工智慧教學使用的視覺模塊。 方式一 使用 mBuild 電源模塊供電(推薦)
  • IoT AP WiFi模塊是一種支持無線路由的WiFi模塊
    其中支持Bridge,Gateway,AP/Client,Router,3G/4G Router5種工作模式SKW92A,SKW92B是常用於IoT的WiFi模塊。 SKW92A集成了802.11n MAC和基帶,1個 2.4GHz無線廣播設備和前端模組,1個580MHz MIPS的CPU,1個高速乙太網PHY。
  • JavaScript 模塊介紹
    但隨著代碼規模的增大,開始把代碼整理到模塊中,出現了一些庫:AMD - 最早期的一個模塊規範,最開始由 require.js 實現了這個規範。CommonJS - Node.js 指定的規範UMD - 統一模塊規範,和 AMD, CommonJS 規範兼容。
  • 各個模塊存在關聯點,完善四大模塊
    最近國家政策密集出臺,給產業共振,科技界一片「大好形勢」,更是給你了一記重磅殺招。隨著企業科技水平及新能源轉型突破成果的顯現,產業改革發展逐步推進,智能製造加速強勢滲透,突破關鍵設備、管理系統、數據分析挖掘等關鍵技術,不僅極大的提升了企業生產效率和質量,促進科技進步,提升商業競爭力,也將有助於對產業升級的穩定增長及實現國家科技創新戰略目標。
  • 一種模塊獨立的單片機開發板設計
    (2)PCF8563 模塊。PCF8563 是 PHILIPS 公司推出的一款工業級採用 I2C 接口功能的具有極低功耗的多功能時鐘/日曆晶片,提供定時器功能、時鐘輸出功能以及中斷輸出等功能能完成各種複雜的定時服務,甚至可為單片機提供看門狗功能。是一款性價比極高的時鐘晶片。(3)EEPROM 模塊。
  • 北大英文授課課程助教教學能力提升項目實踐模塊啟動:第四場教師...
    2020年7月5日,由北京大學教師教學發展中心、國際合作部等多部門院系聯合主辦的北大英文授課課程助教教學能力提升項目啟動了教學實踐能力提升模塊教師教學發展中心和國際合作部的老師都一一作了回答。作為北大英文授課課程助教教學能力提升項目教學實踐提升模塊的重要組成部分,此次講座及交流會活動為助教在實際工作中遇到問題提供了理論和實踐指導,受到項目助教們的歡迎。「學生中期反饋」促進學生、助教和教師之間的相互了解,深化彼此之間的交流與溝通,並為課程團隊反思與改進教學策略提供了有力的數據依據。
  • 太極xposed模塊使用教程
    今天給大家分享一下太極xposed模塊使用教程。很多小夥伴說下載不到Xposed模塊,這個網上其實很多,但是第三方的下載站就算了吧。我也是一個深受其害的網癮少年,只要是下載站的軟體,一不留心一次性電腦可能會多安裝好多個軟體,或者手機也會莫名其妙的安裝一些應用市場。因此今天給大家分享的是小編已經測試並且可以直接使用的手機APP,不用擔心會下載第三方軟體以及有病毒之類的情況。使用太極模塊我們省去了ROOT手機的煩惱,我們可以在模塊裡面加載第三方程序,這樣等於軟體的權限可以直接打開。
  • 串口轉乙太網模塊是什麼,串口轉乙太網模塊的功能和特點
    一、串口轉乙太網模塊是什麼串口轉乙太網模塊是一種支持10M/100M自適應乙太網接口,集成眾多網絡通信協議,支持TTL串口轉乙太網,可以實現UART轉乙太網雙向透傳功能的嵌入式物聯網設備。成都眾山科技生產銷售的串口轉乙太網模塊ZS-Ethernet-801支持1路乙太網網口,支持自定義註冊包、心跳包機制;支持網頁、AT指令、串口、網絡配置;支持超時重啟、DHCP自動獲取IP、DNS域名解析、遠程升級固件、虛擬串口功能。工業級設計,超小體積,超低成本;
  • TX團隊Switch 破解模塊的預購啟動
    TX團隊Switch 破解模塊的預購啟動 2020-04-08 14:38:42 來源 : IT之家 據國外遊戲論壇Gbatemp消息,日前TX團隊(Team-Xecuter)正式宣布啟動Switch破解模塊的預購。