導航:首頁 > 編程語言 > python規范

python規范

發布時間:2022-01-13 20:23:30

『壹』 python編碼規范pep8每行不超過79包括了換行符嗎

變數 常量 : 大寫加下劃線 USER_CONSTANT 對於不會發生改變的全局變數,使用大寫加下

『貳』 如何成為Python高手

如果你有一定的計算機編程知識基礎,那麼很容易學;再如果你對編程十分感興趣,那麼很容易學的。

1,找到合適的入門書籍,大致讀一次,循環啊判斷啊,常用類啊,搞懂(太難的跳過)

2,做些簡單習題,字元串比較,讀取日期之類 Python Cookbook不錯(太難太無趣的,再次跳過,保持興趣是最重要的,不會的以後可以再學)

3,加入Python討論群,態度友好笑眯眯(很重要,這樣高手才會耐心糾正你錯誤常識)。很多小問題,糾結許久,對方一句話點播思路,真的節約你很多時間。耐心指教我的好人,超級超級多謝。

4,解決自己電腦問題。比如下載美劇,零散下載了2,4,5,8集,而美劇共12集,怎樣找出漏下的那幾集?然後問題分解,1讀取全部下載文件名,2提取集的數字,3數字排序和(1--12)對比,找出漏下的。

對於python初學者來說,能找到一個好老師學習格外重要,這能決定你是不是可以做出好的項目,在python開發的路上越走越輕松,如果現在的你缺乏學習經驗,找不到老師指導你學習,可以加企 鵝扣-Q前面112再加上中間的983以及最後四位數4903,連在一起就可以了。

5,時刻記住目的,不是為了當程序員,是為了解決問題。比如,想偷懶抓網頁內容,用urllib不行,用request也不行,才發現抓取內容涉及那麼多方面(cookie,header,SSL,url,javascript等等),當然可以聽人家勸,回去好好讀書,從頭讀。 或者,不求效率,只求解決,用ie打開網頁再另存為行不行?ie已經渲染過全部結果了。 問題變成:1--打開指定的10個網頁(一行代碼就行)。更復雜的想保存呢?利用已經存在的包,比如PAM30(我的是Python3),直接打開ie,用函數outHTML另存為文本,再用搜索函數(str搜索也行,re正則也行)找到數據。簡單吧?而且代碼超級短。

6,保持興趣,用最簡單的方式解決問題,什麼底層驅動,各種交換,留給大牛去寫吧。我們利用已經有的包完成。

7,耐心讀文檔,並且練習快速讀文檔。拿到新包,找到自己所需要的函數,是需要快速讀一次的。這個不難,讀函數名,大概能猜到是幹嘛的,然後看看返回值,能判斷是不是自己需要的。

8,寫幫助文件和學習筆記,並發布共享。教別人的時候,其實你已經自己再次思考一次了。 我覺得學程序就像學英文,把高頻率的詞(循環,判斷,常用包,常用函數)搞懂,就能拼裝成自己想要的軟體。 一定要保持興趣,太復雜的跳過,就像小學數學,小學英語,都是由簡入深。 網路很平面,無數國際大牛著作好書,關於Python,演算法,電腦,網路,或者程序員思路,或者商業思維(浪潮之巔是本好書)等等,還有國際名校的網路公開課(中英文字幕翻譯完畢,觀看不是難事),講計算機,網路,安全,或者安卓系統,什麼都有,只要能持續保持興趣,一點點學習下去,不是難事。 所有天才程序員,都曾是兒童,回到兒童思維來理解和學習。覺得什麼有趣,先學,不懂的,先放著,遇到問題再來學,效果更好。 唯一建議是,不要太貪心,耐心學好一門優雅的語言,再學其它。雖然Javascript做特效很炫,或提某問題時,有大牛建議,用Ruby來寫更好之類,不要改方向。就像老笑話:「要學習遞歸,必須首先理解遞歸。」然後死循環一直下去。堅持學好一門語言,再研究其他。 即使一門語言,跟網路,資料庫等等相關的部分,若都能學好,再學其他語言,是很快的事情。 另外就是,用學英文的耐心來學計算機,英文遇到不懂的詞,抄下,查詢。 python里,看到Http,查查定義,看到outHtml,查查定義,跟初學英語時候一樣,不要直接猜意思,因為精確描述性定義,跟含糊自然語有區別的。而新人瞎猜,很容易錯誤理解,wiki,google很有用。

『叄』 python 中下劃線使用的規范

PEP-8是Python的編程規范,可以看看,Naming Conventions那一節介紹了前/後、單/雙下劃線的用法。

『肆』 為什麼python有兩個不同的版本,並且語法規范什麼的都不相通呢

語言會升級,很正常,基本上所有計算機語言都有這個問題,只不過Python沒有保持向下兼容有點另類。

『伍』 有沒有檢測自己編寫Python程序是否規范的網站,並且糾正程序中不規范的地方

有個叫pep8的python庫可以根據PEP8約定的內容檢查你的代碼, 並給出提示. 不能自動糾正.

『陸』 如何使用 Pylint 來規范 Python 代碼風格

Pylint具體介紹Pylint的安裝Pylint可以用於所有高於或者等於2.2的Python版本兼容。需要logilab-astng(version>=0.14)和logilab-common(version>=0.13)的包(具體信息,請參閱參考資料),如果是Python版本低於2.3,那麼它還需要optik包(本文接下來的示例暫不考慮這種情況)。Pylint所用到的所有的包的下載地址logilab-astng的最新包下載:等等。在Pylint的輸出中有如下兩個部分:源代碼分析部分和報告部分。源代碼分析部分:對於每一個Python模塊,Pylint的結果中首先顯示一些"*"字元,後面緊跟模塊的名字,然後是一系列的message,message的格式如下:MESSAGE_TYPE:LINE_NUM:[OBJECT:]MESSAGEMESSAGE_TYPE有如下幾種:(C)慣例。違反了編碼風格標准(R)重構。寫得非常糟糕的代碼。(W)警告。某些Python特定的問題。(E)錯誤。很可能是代碼中的錯誤。(F)致命錯誤。阻止Pylint進一步運行的錯誤。清單2.Pylint中的utils模塊的輸出結果*************MoleutilsC:88:Message:MissingdocstringR:88:Message:Toofewpublicmethods(0/2)C:183:MessagesHandlerMixIn._cat_ids:MissingdocstringR:183:MessagesHandlerMixIn._cat_ids:MethodcouldbeafunctionR:282:MessagesHandlerMixIn.list_messages:Toomanybranches(14/12)報告部分:在源代碼分析結束後面,會有一系列的報告,每個報告關注於項目的某些方面,如每種類別的message的數目,模塊的依賴關系等等。具體來說,報告中會包含如下的方面:檢查的mole的個數。對於每個mole,錯誤和警告在其中所佔的百分比。比如有兩個moleA和B,如果一共檢查出來4個錯誤,1個錯誤是在A中,3個錯誤是在B中,那麼A的錯誤的百分比是25%,B的錯誤的百分比是75%。錯誤,警告的總數量。回頁首使用Pylint分析Python代碼的具體示例下面是一個從xml文件中讀取一些值並顯示出來的一段Python代碼dw.py,代碼如下:清單3.源碼importstring#!/usr/bin/envpythonimportxml.dom.minidomxmlDom=xml.dom.minidom.parse("identity.xml")organizations=xmlDom.getElementsByTagName('DW')fororginorganizations:procts=org.getElementsByTagName('linux')forproctinprocts:print'ID:'+proct.getAttribute('id')print'Name:'+proct.getAttribute('name')print'WordCount:'+proct.getAttribute('count')清單4.identity.xml的內容這時候使用Pylint的結果(這是從html格式的輸出中拷貝的)為:清單5.Pylint的分析結果*************MoledwC:1:MissingdocstringC:5:=xml.dom.minidom.parse("identity.xml")^C:5:Invalidname"xmlDom"(shouldmatch(([A-Z_][A-Z0-9_]*)|(__.*__))$)C:6:Invalidname"organizations"(shouldmatch(([A-Z_][A-Z0-9_]*)|(__.*__))$)Report部分省略輸出中第一部分是源代碼分析,第二部分是報告。輸出結果中有這么多信息,從哪裡開始分析呢?首先使用如下的步驟來分析代碼:1.因為輸出結果太長,所以可以先不讓它輸出報告部分,先根據源代碼分析部分來找出代碼中的問題。使用選項"--reports=n"。2.使用選項"--include-ids=y"。可以獲取到源代碼分析部分每條信息的ID。清單6.使用pylint--reports=n--include-ids=ydw.py的結果*************MoledwC0111:1:MissingdocstringC0322:5:=xml.dom.minidom.parse("identity.xml")^C0103:5:Invalidname"xmlDom"(shouldmatch(([A-Z_][A-Z0-9_]*)|(__.*__))$)C0103:6:Invalidname"organizations"(shouldmatch(([A-Z_][A-Z0-9_]*)|(__.*__))$)每個信息前面都會加上一個id,如果不理解這個信息的意思,可以通過pylint--help-msg=id來查看。清單7.使用pylint--help-msg=C0111的結果C0111:*Missingdocstring*Usedwhenamole,function,classormethodhasnodocstring.Somespecialmethodslike__init__doesn'tnecessaryrequireadocstring..3.開始分析每個源代碼中的問題。從上面知道,第一個問題的原因是缺少docstring,在代碼中增加docstring,修改後的代碼如下:清單8.增加docstring修改後的源碼#!/usr/bin/envpython""""""importxml.dom.minidomxmlDom=xml.dom.minidom.parse("identity.xml")organizations=xmlDom.getElementsByTagName('DW')fororginorganizations:procts=org.getElementsByTagName('linux')forproctinprocts:print'ID:'+proct.getAttribute('id')print'Name:'+proct.getAttribute('name')print'WordCount:'+proct.getAttribute('count')重新運行pylint--reports=n--include-ids=ydw.py,結果為:清單9.運行結果*************MoledwC0322:7:=xml.dom.minidom.parse("identity.xml")^C0103:7:Invalidname"xmlDom"(shouldmatch(([A-Z_][A-Z0-9_]*)|(__.*__))$)C0103:8:Invalidname"organizations"(shouldmatch(([A-Z_][A-Z0-9_]*)|(__.*__))$)可以看到源代碼中的第一個問題已被解決。4.關於第二個C0322的問題,這里的分析結果說明得比較清楚,是代碼第七行中的等號運算符兩邊沒有空格。我們在這里加上空格,重新運行pylint--reports=n--include-ids=ydw.py,結果為:清單10.運行結果*************MoledwC0103:7:Invalidname"xmlDom"(shouldmatch(([A-Z_][A-Z0-9_]*)|(__.*__))$)C0103:8:Invalidname"organizations"(shouldmatch(([A-Z_][A-Z0-9_]*)|(__.*__))$)5.可以看到現在問題只剩下C0103了。這里的意思是變數命名規則應該符合後面正則表達式的規定。Pylint定義了一系列針對變數,函數,類等的名字的命名規則。實際中我們不一定要使用這樣的命名規則,我們可以定義使用正則表達式定義自己的命名規則,比如使用選項--const-rgx='[a-z_][a-z0-9_]{2,30}$',我們將變數xmlDom改為xmldom,代碼如下:清單11.將變數xmlDom改為xmldom後的源碼#!/usr/bin/envpython""""""importxml.dom.minidomxmldom=xml.dom.minidom.parse("identity.xml")organizations=xmldom.getElementsByTagName('DW')fororginorganizations:procts=org.getElementsByTagName('linux')forproctinprocts:print'ID:'+proct.getAttribute('id')print'Name:'+proct.getAttribute('name')print'WordCount:'+proct.getAttribute('count')運行pylint--reports=n--include-ids=y--const-rgx='[a-z_][a-z0-9_]{2,30}$'dw.py,結果中就沒有任何問題了。6.如果希望一個組里的人都使用這些統一的規則,來規范一個部門的代碼風格。比如說大家都使用--const-rgx='[a-z_][a-z0-9_]{2,30}$'作為命名規則,那麼一個比較便捷的方法是使用配置文件。使用pylint--generate-rcfile>pylint.conf來生成一個示例配置文件,然後編輯其中的--const-rgx選項。或者也可以直接pylint--const-rgx='[a-z_][a-z0-9_]{2,30}$'--generate-rcfile>pylint.conf,這樣生成的配置文件中--const-rgx選項直接就是'[a-z_][a-z0-9_]{2,30}$'了。以後運行Pylint的時候指定配置文件:pylint--rcfile=pylint.confdw.py這樣Pylint就會按照配置文件pylint.conf中的選項來指定參數。在一個部門中,大家可以共同使用同一個配置文件,這樣就可以保持一致的代碼風格。7.如果把report部分加上,即不使用--reports=n,可以看到報告部分的內容。

『柒』 python正則表達式辨別輸入日期規范是什麼

1、python正則表達式辨別輸入日期規范如下:

year,month,day=eval(input("請輸入年月日,之間用逗號分開"))

months=[31,28,31,30,31,30,31,31,30,31,30,31]

if (year%4==0 and year %100 !=0) or (year%400==0):

months[1]=29 #閏年的話2月最多29天

if month<1 or month>12:

print("月份不合法")

elif day<1 or day>months[month+1]:

print("日不合法")

else:

print("年月日合法")

2、代碼:

『捌』 python pep8規范 換行對齊問題

PEP8規范(這一點似乎達到了高度的統一),但遵守80個字元限制的很少。在一些有明確規定的規范標准中,這個限制可能會增加(100或120),甚至完全刪除。這樣做常長見的理由是:我們已經不是使用VT100終端編程的年代了,我們有了更大,更高解析度的屏幕。這是事實,但我發現,在Python編碼中採用這個80個字元的規范,配合空格的使用,這會讓我們的代碼更急湊,更可讀。
有一點你可以看出

『玖』 python中關於「 _,」的用法請教

python中的異常

異常是指程序中的例外,違例情況。異常機制是指程序出現錯誤後,程序的處理方法。當出現錯誤後,程序的執行流程發生改變,程序的控制權轉移到異常處理。
Exception類是常用的異常類,該類包括StandardError,StopIteration, GeneratorExit, Warning等異常類。
StandardError類是python中的錯誤異常,如果程序上出現邏輯錯誤, 將引發該異常。StandardError類是所有內斂異常的基類,放置在默認的命名空間中,因此使用IOEroor,
EOFError, ImportError等類,不需要導入exception模塊。
StopIteration類判斷循環是否執行到尾部,如果循環到尾部,則拋出該異常。
GeneratorExit類是由Generator函數引發的異常,當調用close()時引發該異常。
Warning類表示程序中的代碼引起的警告。
python中的異常使用繼承結構創建,可以在異常處理程序中捕獲基類異常,也可以捕獲各種子類異常,python中使用try...except語句捕獲異常,異常子句定義在try子句後面。

try...except的使用方法

try...except用於處理問題語句,捕獲可能出現的異常。try子句中的代碼塊放置可能出現異常的語句,except子句中的代碼塊處理異常。
演示try...except語句捕獲IOError異常
try:
file("hello.txt", "r") #如果文件不存在,引發異常
print "讀文件"
except IOError: #捕獲IO異常
print "文件不存在"
except: #其它異常
print "程序異常"

python與Java的異常處理模式相似,異常處理語句也可以嵌套,演示如下:
try:
s = "hello"
try:
print s[0] + s[1]
print s[0] - s[1]
except TypeError:
print "字元串不支持減法運算"
except:
print "異常"
如果外層try子句中的代碼引發異常,程序將直接跳轉到外層try對應的except子句,而內部的try子句將不會被執行。

try...finally的使用方法
try...except後還可以添加一個finally子句。無論異常是否發生,finally子句都會被執行。所有的finally子句通常用於關閉因異常而不能釋放的系統資源。
try:
f = open("hello.txt", "r")
try:
print f.read(5)
except:
print "讀文件異常"
finally:
print "釋放資源"
f.close()
except IOError:
print "文件不存在"

使用raise拋出異常
當程序出現錯誤,python會自動引發異常,也可以通過raise顯示地引發異常。一旦執行了raise語句,raise後面的語句將不能執行。
演示raise用法
try:
s = None
if s is None:
print "s 是空對象"
raise NameError #如果引發NameError異常,後面的代碼將不能執行
print len(s)
except TypeError:
print "空對象沒有長度"

自定義異常
python允許程序員自定義異常,用於描述python中沒有涉及的異常情況,自定義異常必須繼承Exception類,自定義異常按照命名規范以"Error"結尾,顯示地告訴程序員這是異常。自定義異常使用raise語句引發,而且只能通過人工方式觸發。
from __future__ import division

class DivisionException(Exception):
def __init__(self, x, y):
Exception.__init__ (self, x, y) #調用基類的__init__進行初始化
self.x = x
self.y = y

if __name__ == "__main__":
try:
x = 3
y = 2
if x % y > 0: #如果大於0, 則不能被初始化,拋出異常
print x/y
raise DivisionException(x, y)
except DivisionException,div: #div 表示DivisionException的實例對象
print "DivisionExcetion: x/y = %.2f" % (div.x/div.y)

assert語句的使用
assert語句用於檢測某個條件表達式是否為真。assert語句又稱為斷言語句,即assert認為檢測的表達式永遠為真,if語句中的條件判斷都可以使用assert語句檢測。

『拾』 python標准庫中有的庫名是大寫開頭,有的是小寫開頭,到底有沒有一個規范

沒有強制性的規定, 只是頂級開發者一般都會遵守一些約定網頁鏈接

閱讀全文

與python規范相關的資料

熱點內容
重置為什麼還是會有文件夾 瀏覽:563
雲上城之歌連接不了伺服器 瀏覽:662
有什麼可以比飛翔解壓的嗎 瀏覽:845
黑暗之魂攻略pdf 瀏覽:904
世嘉20壓縮比 瀏覽:148
瑞斯康達交換機命令 瀏覽:469
加密貨幣擠兌 瀏覽:575
scum伺服器新手禮包都有什麼 瀏覽:561
修改linux的編碼格式 瀏覽:48
單片機232通信 瀏覽:223
則在該支座一側箍筋加密 瀏覽:898
php緩存操作 瀏覽:658
程序員考公是什麼意思 瀏覽:404
安卓手機怎麼打開7z文件夾 瀏覽:818
領克app如何查看胎壓 瀏覽:956
跳跳花app在哪裡下載 瀏覽:673
內核編譯論壇 瀏覽:874
pr預覽渲染顯示錯誤編譯影片 瀏覽:723
php網站添加驗證碼 瀏覽:126
程序員有沒有技師職稱 瀏覽:274