此前實(shí)現(xiàn)的C代碼統(tǒng)計(jì)工具僅能分析和統(tǒng)計(jì)C語言代碼文件,但其設(shè)計(jì)思想也適用于Python代碼及其他編碼語言。
Python行數(shù)統(tǒng)計(jì)的難點(diǎn)在于注釋行,因?yàn)镻ython有兩種注釋方式:簡單明了的單行注釋和復(fù)雜含糊的多行注釋(塊注釋)。單行注釋以#(pound或hash)符號起始,直至物理行的末尾(但字符串內(nèi)的#并無注釋作用)。多行注釋可在每行頭部添加#號,也可包入未命名的三引號字符串(triple-quotedstrings,即多行字符串)內(nèi)。除非未命名三引號字符串作為對象的文檔字符串(docstring),即模塊、類、或函數(shù)體的第一條語句為未命名字符串,否則可作為多行注釋。
下面以總27_代7_注15_空5.py腳本為例,演示不同的注釋方式。注意,該腳本僅作測試數(shù)據(jù)用,并非真實(shí)世界中的腳本文件。
#!/usr/bin/python
#-*-coding:utf-8-*-
#comment3
print'code1'
'''comment4
print"""comment5"""
comment6'''
"""comment7
'''print'comment8andcomment9'
"""
print'code2'
defcode3():
"""f=open('whatever','r')
multilinecomment10,11,12makeupadocstring
"""
print'code4'
'''
print'comment13,comment14andcomment15'
'''
return'code5'
help(code3);print'code6'
printcode3.__doc__,'code7'
運(yùn)行該腳本后,輸出如下:
code1
code2
Helponfunctioncode3inmodule__main__:
code3()
f=open('whatever','r')
multilinecomment10,11,12makeupadocstring
code6
f=open('whatever','r')
multilinecomment10,11,12makeupadocstring
code7
使用未命名三引號字符串做注釋時(shí),存在如下缺點(diǎn):
未命名字符串本質(zhì)上并非注釋,而是不生成字節(jié)碼的語句。因此,需要滿足縮進(jìn)要求(常錯(cuò)點(diǎn))。
無法注釋掉已包含相同三引號字符串的代碼。
IDE的語法高亮?xí)⑷栕址畼?biāo)記為字符串,而不是注釋區(qū)。
此外,大多數(shù)IDE均支持選擇代碼片段,并自動(dòng)使用單行注釋符對選區(qū)添加注釋。以IDLE(PythonGUI)為例,快捷鍵Alt+3可添加注釋,Alt+4可刪除注釋。因此,建議總是使用#號添加多行注釋,而三引號字符串僅用于調(diào)試過程中臨時(shí)性地注釋代碼塊。
以上內(nèi)容為大家介紹了Python代碼統(tǒng)計(jì)工具,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。