日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如果連這10個(gè)Python縮寫(xiě)都不知道,那你一定是Python新手

 簡(jiǎn)介

社旗網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),社旗網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為社旗數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的社旗做網(wǎng)站的公司定做!

對(duì)于許多開(kāi)始學(xué)習(xí)編程的人來(lái)說(shuō),Python已經(jīng)成為他們的選擇。Python有非常直觀的語(yǔ)法和支持動(dòng)態(tài)類型的靈活性。此外,它是一種解釋語(yǔ)言,這使得使用交互式控制臺(tái)進(jìn)行學(xué)習(xí)成為可能?;旧?,我們只需使用命令行工具(如Mac中的Terminal)來(lái)啟動(dòng)Python學(xué)習(xí),因?yàn)镻ython在macOS中是默認(rèn)附帶安裝的。

我們?cè)趯W(xué)習(xí)Python時(shí),會(huì)逐漸熟悉它的數(shù)據(jù)結(jié)構(gòu)、控制流、類、函數(shù)和其他基本內(nèi)容。我發(fā)現(xiàn)了一件很有趣的事情,那就是Python中我們經(jīng)常會(huì)遇到的各種首字母縮略詞。在本文中,我將介紹十個(gè)這樣的縮略詞。其中有一些是通用的編程原理,還有一些是針對(duì)Python的特定編碼。然而,每一種方法都有非常有趣的地方。

1. OOP(面向?qū)ο缶幊?

我們一定要知道的第一個(gè)縮寫(xiě)是OOP--面向?qū)ο缶幊?,這也是Python編程設(shè)計(jì)的基礎(chǔ)。我們知道編程本身是關(guān)于編碼的,但是程序本身應(yīng)該是關(guān)于數(shù)據(jù)的。我們的程序需要獲取輸入數(shù)據(jù)、過(guò)程數(shù)據(jù)和輸出數(shù)據(jù)。注意,這里討論的數(shù)據(jù)是一般意義上的數(shù)據(jù),包括表格數(shù)據(jù)、字符串、用戶操作(例如,單擊按鈕)、圖像以及具有信息的任何形式的數(shù)據(jù)。我們代碼的工作任務(wù)是處理各種形式的數(shù)據(jù),并以所需的方式呈現(xiàn)它們。

為了完成我們的工作,我們需要能夠處理這些數(shù)據(jù)的代碼,而現(xiàn)代編程語(yǔ)言(包括Python)中的一種常見(jiàn)設(shè)計(jì)模式就是采用OOP范式。這個(gè)想法非常直觀-我們用特定的對(duì)象包裝數(shù)據(jù)。更具體地說(shuō),對(duì)象可以保存數(shù)據(jù)(例如,屬性)并且可以操作數(shù)據(jù)(例如,方法)。例如,如果我們開(kāi)發(fā)一個(gè)賽車游戲。我們可以構(gòu)建汽車對(duì)象,并且每個(gè)對(duì)象都可以具有特定的屬性,例如顏色,最大速度和重量。此外,這些對(duì)象還可以進(jìn)行制動(dòng)和加速等操作。這些數(shù)據(jù)的邏輯組織以對(duì)象(汽車)為中心。

讓我們看一下Python中的特定示例。我們可以使用內(nèi)置的 str 類包裝字符串?dāng)?shù)據(jù),這不僅允許我們使用string對(duì)象傳遞字符串?dāng)?shù)據(jù),還可以改變字符串的表示方式。讓我們?cè)谙旅婵吹揭粋€(gè)非常簡(jiǎn)單的示例。

 
 
 
  1. >>> # 創(chuàng)建str類型的變量
  2. ... hello = "Hello Python!"
  3. ... 
  4. ... # 將數(shù)據(jù)發(fā)送到函數(shù)調(diào)用
  5. ... print(hello)
  6. ... 
  7. ... # 使用字符串方法操作字符串?dāng)?shù)據(jù)
  8. ... hello_lower = hello.lower()
  9. ... hello_upper = hello.upper()
  10. ... print('lowercased:', hello_lower)
  11. ... print('uppercased:', hello_upper)
  12. ... 
  13. Hello Python!
  14. lowercased: hello python!
  15. uppercased: HELLO PYTHON!

2.DRY(不要重復(fù))

DRY原則(不要重復(fù))是每個(gè)程序員應(yīng)該實(shí)踐的最基本的規(guī)則之一。這個(gè)規(guī)則很簡(jiǎn)單:如果你注意到你的代碼中有任何重復(fù),這是代碼需要進(jìn)行重構(gòu)的信號(hào),盡量減少重復(fù)代碼,或者盡可能完全刪除重復(fù)代碼。下面的偽代碼向你展示了通過(guò)應(yīng)用DRY原則重構(gòu)某些代碼。

 
 
 
  1. def do_something(item):
  2.     pass
  3. # 重復(fù)性工作
  4. do_something(item0)
  5. do_something(item1)
  6. do_something(item2)
  7. # 應(yīng)用DRY
  8. for item in (item0, item1, item3):
  9.     do_something(item)

代碼重構(gòu)還有另外一個(gè)應(yīng)用場(chǎng)景:你發(fā)現(xiàn)自己要處理的是一堆具有相同結(jié)構(gòu)的數(shù)據(jù)。與其使用一系列字典、列表或元組來(lái)存儲(chǔ)每個(gè)人的數(shù)據(jù),不如考慮使用自己的類來(lái)處理這些數(shù)據(jù)。這不僅是為了減少代碼出錯(cuò)的可能性,而且有利于長(zhǎng)期的可維護(hù)性。

3. PIP(Python軟件包安裝程序)

Python的流行最重要的原因可能是它的開(kāi)源特性,這就導(dǎo)致大量免費(fèi)的Python程序包源源不斷地開(kāi)放出來(lái)。根據(jù)Wikipedia的介紹,在Python軟件包索引(PyPI)中索引了235,000多個(gè)軟件包。 我們可以使用 pip 工具從 PyPI 安裝任何軟件包。 該安裝過(guò)程非常輕松,只需在命令或終端中使用一行代碼即可。 以下代碼段總結(jié)了一些常用用法。

 
 
 
  1. # 安裝最新版本
  2. pip install package_name
  3. # 安裝特定版本
  4. pip install package_name==version_number
  5. # 卸載軟件包
  6. pip uninstall package_name
  7. # 顯示已安裝的軟件包
  8. pip list
  9. # 顯示有關(guān)特定包的信息
  10. pip show package_name
  11. #安裝依賴項(xiàng)列表,例如克隆虛擬環(huán)境
  12. pip install -r requirements.txt

4. LEGB(本地,封閉,全局和內(nèi)置)

LEGB規(guī)則引用 Python 中的變量查找順序,如下圖所示。 具體來(lái)說(shuō),當(dāng)解釋程序嘗試解析變量時(shí),Python 具有四層作用域--了解將哪些值綁定到變量。 首先從本地范圍開(kāi)始,該范圍可以是函數(shù)或類。 如果解釋器找到了變量的相應(yīng)綁定值,它將停止查找并將變量與該特定值一起使用。

可變分辨率規(guī)則

否則,它將在更高的級(jí)別上查找它—封閉范圍。封閉范圍只存在于函數(shù)的嵌套結(jié)構(gòu)中。具體地說(shuō),當(dāng)一個(gè)函數(shù)在另一個(gè)函數(shù)中聲明時(shí),我們稱內(nèi)部函數(shù)為內(nèi)部函數(shù),而外部函數(shù)稱為外部函數(shù)。當(dāng)解釋器試圖解析在內(nèi)部函數(shù)的作用域內(nèi)使用的變量時(shí),如果不能在局部范圍內(nèi)解析,它將轉(zhuǎn)到封閉的作用域,即外部函數(shù)的局部作用域。

如果它仍然無(wú)法解析封閉范圍內(nèi)的變量,它將轉(zhuǎn)到全局范圍。全局范圍通常是模塊級(jí)的,通常是一個(gè)獨(dú)立的 Python 文件。值得注意的是,當(dāng)我們將包導(dǎo)入當(dāng)前文件時(shí),導(dǎo)入的函數(shù)和類也將成為全局范圍的一部分。內(nèi)置范圍是指當(dāng)啟動(dòng)解釋器時(shí)加載的函數(shù)、類和其他模塊,以使這些最基本的對(duì)象始終可用(例如打印和其他內(nèi)置函數(shù))。

5. MRO(方法解析順序)

方法解析順序表示 Python 或編程語(yǔ)言通常如何解析方法或?qū)傩浴?與上面討論的 LEGB 規(guī)則關(guān)注的是解決變量不同,MRO關(guān)注的是對(duì)象以及對(duì)象的方法調(diào)用或特定屬性的獲取方式。MRO 主要是在多繼承的上下文中討論的--從多個(gè)類(即超類)和/或多層繼承繼承的類(即子類)。因?yàn)樽宇惡统惗脊蚕砟承?shí)現(xiàn)方法可能不同的通用方法,所以 Python 解釋器需要一種機(jī)制來(lái)確定在特定調(diào)用中應(yīng)使用哪種方法或?qū)傩?,而這正是MRO的職責(zé)。下面的代碼段顯示了一個(gè)示意性示例。

 
 
 
  1. >>> class X:
  2. ...     def bin(self):
  3. ...         print(f"bin called in X")
  4. ... 
  5. ... class Y(X):
  6. ...     def go(self):
  7. ...         print(f"go called Y")
  8. ... 
  9. ... class Z(X):
  10. ...     def go(self):
  11. ...         print(f"go called Z")
  12. ... 
  13. ... class W(Y, Z):
  14. ...     def bin(self):
  15. ...         super().bin()
  16. ...         print(f"bin called W")
  17. ... 
  18. ...     def bingo(self):
  19. ...         self.bin()
  20. ...         self.go()
  21. ... 
  22. ... w = W()
  23. ... w.bingo()
  24. ... 
  25. bin called in X
  26. bin called W
  27. go called Y

對(duì)于W類的實(shí)例(第22行),當(dāng)我們調(diào)用 bingo()方法時(shí),此方法將在其自己的類中解析,因?yàn)樗窃陬愔卸x的(第18-20行)。但是,此方法將進(jìn)一步調(diào)用 bin()和go()方法。以類似的方式,bin()方法在其自己的類上解析,但是,它調(diào)用超類的 bin()方法,如第15行所示。但是在其直接超類(即Y和Z)中,都沒(méi)有實(shí)現(xiàn) bin()方法,因此 Python 會(huì)比超類的超類(即X)高一個(gè)級(jí)別,在超類中實(shí)現(xiàn)并調(diào)用 bin()方法。

值得注意的是,對(duì)于 W 的 go()方法,其兩個(gè)超類都實(shí)現(xiàn)了此方法,但是如你所見(jiàn),只有 Y 類中使用的實(shí)現(xiàn)才被調(diào)用。這是因?yàn)楫?dāng)我們定義 W 類時(shí),繼承順序?yàn)?Y 和 Z,這將使 MRO 遵循相同的順序。與此相關(guān),我們可以使用特殊方法 __mro__ 找出特定類的 MRO,如下所示。另外,為了向大家展示類繼承順序的重要性,我們創(chuàng)建了另一個(gè)類,其中Z類位于Y類之前,這將更改 W_類的MRO。

 
 
 
  1. >>> print('W Class MRO:', W.__mro__)
  2. ... 
  3. ... class W_(Z, Y):
  4. ...     pass
  5. ... 
  6. ... print('W_ Class MRO:', W_.__mro__)
  7. ... 
  8. W Class MRO: ()
  9. W_ Class MRO: ()

6.&7.EAFP(請(qǐng)求原諒比請(qǐng)求許可更容易)和LBYL(三思而后行)

EAFP(請(qǐng)求原諒比請(qǐng)求許可更容易)編碼風(fēng)格正是 Python 蓬勃發(fā)展的方向。因?yàn)?Python 是一種動(dòng)態(tài)編程語(yǔ)言,所以在運(yùn)行時(shí),實(shí)現(xiàn)以及對(duì)現(xiàn)有實(shí)例對(duì)象、類甚至模塊的修改都是可能的。因此,建議大家在假定特定屬性或功能可用的情況下編寫(xiě)代碼。換言之,如果某些代碼可能存在特定的問(wèn)題,那么就讓問(wèn)題浮出水面并相應(yīng)地解決它們。通過(guò)應(yīng)用 EAFP 規(guī)則,如果我們想更進(jìn)一步,我們可以簡(jiǎn)單地使用 try…except 語(yǔ)句編寫(xiě)特定的代碼來(lái)處理代碼可能引發(fā)的潛在異常?;旧希覀兊南敕ㄊ前l(fā)生意外的事情,我們會(huì)事后處理。

與 EAFP 原則相反,還有另一種編碼樣式稱為 LBYL,它代表“跨越式”。使用這種編碼方式,程序員應(yīng)該在某些代碼可以運(yùn)行之前排除所有可能的不希望出現(xiàn)的情況。因此,大家可以在項(xiàng)目中看到更多遵循 LBYL 原則的 if 語(yǔ)句。這種編碼方式基本上可以用特別的方式來(lái)防止任何問(wèn)題。

下面的代碼片段向大家展示了一個(gè)使用 EAFP 與 LBYL 的可能場(chǎng)景。對(duì)于 EAFP 編碼樣式,我們只需在 try…except 語(yǔ)句中包裝代碼和預(yù)期可能的異常,而對(duì)于 LBYL 編碼樣式,我們必須在劃分之前使用自省方法和值檢查來(lái)驗(yàn)證適用的條件。如你所見(jiàn),EAFP 代碼看起來(lái)更加整潔,而且沒(méi)有創(chuàng)建嵌套結(jié)構(gòu)。當(dāng)然,如果你愿意,也可以在項(xiàng)目中應(yīng)用 LBYL,而且不會(huì)改變項(xiàng)目最終的工作方式。

 
 
 
  1. def with_EAFP_divide_ten_by(number):
  2.     try:
  3.         print(f'10 divided by {number} is {10 / number}.')
  4.     except ZeroDivisionError:
  5.         print("You can't divide zero.")
  6.     except TypeError:
  7.         print("You can only divide a number.")
  8. def with_LBYL_divide_ten_by(number):
  9.     if isinstance(number, int) or isinstance(number, float):
  10.         if number == 0:
  11.             print("You can't divide zero.")
  12.         else:
  13.             print(f'10 divided by {number} is {10 / number}.')
  14.     else:
  15.         print("You can only divide a number.")

8. PEP(Python增強(qiáng)建議)

在上一節(jié)中,我們討論了編碼風(fēng)格。 但是,最具影響力的Python編碼風(fēng)格指南之一是 PEP 8--Python增強(qiáng)建議#8,由 BDFL(將在下面討論)和其他幾個(gè) Python 核心維護(hù)者共同編寫(xiě)。PEP涵蓋了所有與 Python 相關(guān)的內(nèi)容。 大家可以在官方網(wǎng)站上找到整個(gè)列表。 以下為一些著名的文章:

PEP 8:Python代碼樣式指南(https://www.python.org/dev/peps/pep-0008/)

PEP 257:文檔字符串慣例(https://www.python.org/dev/peps/pep-0257/)

PEP 20:Python之禪(https://www.python.org/dev/peps/pep-0257/)

PEP 498:文字字符串插值(https://www.python.org/dev/peps/pep-0498/)

PEP 202:列表理解(https://www.python.org/dev/peps/pep-0202/)

PEP 405:Python虛擬環(huán)境(https://www.python.org/dev/peps/pep-0405/)

9.BDFL(仁慈的生命獨(dú)裁者)

什么是BDFL?當(dāng)然,標(biāo)題已經(jīng)告訴了你它代表什么,但它實(shí)際上意味著什么?

在維基百科上,它的定義是:

仁慈的生命獨(dú)裁者(BDFL)是給少數(shù)開(kāi)源軟件開(kāi)發(fā)領(lǐng)導(dǎo)人的稱號(hào),他們通常是在社區(qū)內(nèi)部的爭(zhēng)議或爭(zhēng)論中保留最終發(fā)言權(quán)的項(xiàng)目創(chuàng)始人。

盡管這個(gè)定義通常適用于開(kāi)源軟件開(kāi)發(fā),但它首先在 Python 社區(qū)中使用,作為對(duì) Guido van Rossum(GvR)的引用,GvR 是 Python 編程語(yǔ)言的創(chuàng)建者。在擔(dān)任 BDFL 職位 20 多年后,于 2018 年卸任。

10. REPL(讀--評(píng)估--打印循環(huán))

在我看來(lái),REPL(讀取-評(píng)估-打印循環(huán))是讓我們能夠這么輕松學(xué)習(xí)Python的便捷工具。 正如我們所知道的,我們甚至可以開(kāi)始像使用命令或終端窗口一樣簡(jiǎn)單地學(xué)習(xí)Python編程。 你可以使用pip工具如前所示的方法來(lái)安裝任何軟件包。 更重要的是,我們可以立即編寫(xiě)第一行Python代碼,不需要使用其他編程語(yǔ)言配置任何 IDE 工具。

 
 
 
  1. >>> print("Hello World!")
  2. Hello World!
  3. >>> 3 * 2
  4. 6
  5. >>> type(5)

REPL工作流非常簡(jiǎn)單——在控制臺(tái)中讀取代碼、對(duì)其進(jìn)行求值并打印出任何適用的結(jié)果,然后反復(fù)重復(fù)這三個(gè)步驟,用于探索 Python 的各種特性。REPL 是在標(biāo)準(zhǔn) Python 或其他常見(jiàn) Python 開(kāi)發(fā)工具(如ipython)中作為默認(rèn)模式實(shí)現(xiàn)的,ipython 是著名的 Python 學(xué)習(xí)和編碼工具 Jupiter Notebook 的基礎(chǔ)。

結(jié)論

Python是一種靈活而強(qiáng)大的 OOP 語(yǔ)言,由 BDFL GvR 創(chuàng)建。 利用 PIP 命令,我們可以輕松地管理 Python 軟件包,并通過(guò) REPL 在控制臺(tái)中學(xué)習(xí)語(yǔ)言和各種軟件包。 當(dāng)我們使用 Python 進(jìn)行編程時(shí),必須遵循 PEP 8 概述中的樣式。其他重要的編碼原理包括 DRY 和 EAFP 。 如果你愿意,也可以在編碼中做一些LBYL。 LEGB 規(guī)則和 MRO 能夠幫助你了解如何解析變量、屬性和函數(shù),讓你的代碼按照自己的預(yù)期來(lái)運(yùn)行。


網(wǎng)頁(yè)名稱:如果連這10個(gè)Python縮寫(xiě)都不知道,那你一定是Python新手
文章位置:http://www.5511xx.com/article/dpgohdd.html