創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!
成都創(chuàng)新互聯(lián)公司是少有的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、營(yíng)銷(xiāo)型企業(yè)網(wǎng)站、成都小程序開(kāi)發(fā)、手機(jī)APP,開(kāi)發(fā)、制作、設(shè)計(jì)、買(mǎi)友情鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,從2013年開(kāi)始,堅(jiān)持透明化,價(jià)格低,無(wú)套路經(jīng)營(yíng)理念。讓網(wǎng)頁(yè)驚喜每一位訪客多年來(lái)深受用戶(hù)好評(píng)改善Python程序的建議?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
建議1:理解Pythonic概念
·Pythonic定義
·pythonic:充分體現(xiàn)Python自身特色的代碼風(fēng)格。
·代碼風(fēng)格
·交換兩個(gè)數(shù)字
利用Python的packaging/unpackaging機(jī)制。
a, b = b, a
·遍歷一個(gè)容器
for i in alist: do_sth_with(i)
·安全地關(guān)閉文件描述符
with open(path, 'r') as f: do_sth_with(f)
寫(xiě)出來(lái)的代碼具有Python味,而不是看著像C語(yǔ)言代碼。
·標(biāo)準(zhǔn)庫(kù)
字符串格式化一般這樣寫(xiě):
print("Hello %s!" % ('Tom',))
但是真正具有Pythonic的代碼是這樣的:
print("{great} from {language}.".format(greet = 'Hello, World', language = 'Python'))
·Pythonic的庫(kù)或框架
Flask:
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello, World!" if __name__ == "__main__": app.run()
建議2:編寫(xiě)Pythonic代碼
·避免劣化代碼
·避免只用大小寫(xiě)來(lái)區(qū)分不同的對(duì)象。
·避免使用容易引起混淆的名稱(chēng)。
·不要害怕過(guò)長(zhǎng)的變量名稱(chēng)。
·深入認(rèn)識(shí)Python有助于編寫(xiě)Pythonic代碼
·掌握Python提供給我們的語(yǔ)言特性和庫(kù)特性(Language Reference和Library Reference)。
·深入學(xué)習(xí)業(yè)界公認(rèn)的比較Pythonic的代碼,比如Flask、gevent和requests等。
·pep-8——Python編碼風(fēng)格指南。(其它還有:Pychecker、Pylint、Pyflakes等)
建議3:理解Python與C語(yǔ)言的不同之處(切忌用C語(yǔ)言的思維和風(fēng)格來(lái)編寫(xiě)Python代碼)
·“縮進(jìn)”與“{}”
python使用嚴(yán)格的代碼縮進(jìn)方式分隔代碼塊。(unexpected indent錯(cuò)誤)
·“與”
沒(méi)有區(qū)別,注意轉(zhuǎn)義。
·三元操作符“?:”
三元操作符的語(yǔ)法形式為:C?X:Y,表示當(dāng)條件C為T(mén)rue時(shí),取值X,C為False時(shí),取值Y。在Python中的等價(jià)形式為X if C else Y。
·switch…case
Python沒(méi)有像C語(yǔ)言的switch…case分支語(yǔ)句。
通過(guò)if…elif…else實(shí)現(xiàn):
if n == 0: do_sth elif n > 0: do_sth else: do_sth
還可以通過(guò)跳轉(zhuǎn)表實(shí)現(xiàn)。
def f(x): return { 0: "You typedzero.\n", 1: "You are in top.\n", 2: "n is an even number.\n" }.get(n, "Only single-digit numbers are allowed\n")
建議4:在代碼中適當(dāng)添加注釋?zhuān)ㄓ脕?lái)解釋代碼的功能、原因和想法;對(duì)于不再需要的代碼應(yīng)該直接刪除而不是注釋掉,可以使用版本控制工具找回代碼)
·使用塊或者行注釋的時(shí)候僅僅注釋那些復(fù)雜的操作、算法,還有可能別人難以理解的技巧或者不夠一目了然的代碼。
·注釋和代碼隔開(kāi)一定的距離,同時(shí)在塊注釋之后最好能夠多留幾行空白再寫(xiě)代碼。
·給外部可訪問(wèn)的函數(shù)和方法添加注釋文檔。注釋要清楚地描述方法的功能,并對(duì)參數(shù)、返回值以及可能發(fā)生的異常進(jìn)行說(shuō)明,使得外部調(diào)用它的人員僅僅看docstring就能正確使用。較為復(fù)雜的內(nèi)部方法也需要進(jìn)行注釋。(Pycharm可以幫助解決)
·推薦在文件頭中包含copyright申明、模塊描述等。(Pycharm可以幫助解決)
建議5:通過(guò)適當(dāng)添加空行使得代碼布局更為優(yōu)雅合理
·在一組代碼表達(dá)完一個(gè)完整的思路之后,應(yīng)該用空白行進(jìn)行間隔(if塊、while塊等)
·盡量保持上下文語(yǔ)義的易理解性(調(diào)用時(shí)最好調(diào)用者在上,被調(diào)用者在下)
·避免過(guò)長(zhǎng)的代碼行,每行最好不要超過(guò)80個(gè)字符。(Pycharm可以幫助解決)
·不要為了保持水平對(duì)齊而使用多余的空格
·一行不要有多個(gè)命令
·空格的使用能夠在需要強(qiáng)調(diào)的時(shí)候警示讀者,在疏松關(guān)系的實(shí)體間起到分隔作用,而在具有緊密關(guān)系的時(shí)候不要使用空格。
建議6:編寫(xiě)函數(shù)的4個(gè)原則
·函數(shù)設(shè)計(jì)要盡量短小,嵌套層次不宜過(guò)深。
·函數(shù)聲明應(yīng)該做到合理、簡(jiǎn)單、易于使用。
·函數(shù)參數(shù)設(shè)計(jì)應(yīng)該考慮向下兼容。
·一個(gè)函數(shù)只做一件事情,盡量保證函數(shù)語(yǔ)句粒度的一致性。
建議7:將常量集中到一個(gè)文件
·constant.py
class _const: class ConstError(TypeError): pass class ConstCaseError(ConstError): pass def __setattr__(self, name, value): if self.__dict__.has_key(name): raise(self.ConstError, "Can't change const.%s" % name) if not name.isupper(): raise(self.ConstCaseError, "const name %s is not all uppercase" % name) self.__dict__[name] = value import sys, const sys.modules[__name__] = _const() const.MY_CONSTANT = 1 const.MY_SECOND_CONSTANT = 2 const.MY_THIRD_CONSTANT = 'A' const.MY_FORTH_CONSTANT = 'B'
·其他模塊中引用
from constant import const print(const.MY_SECOND_CONSTANT)
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。