1. 什么是 PEP8?
答:PEP8 --《Python Enhancement Proposal #8》(8 號 Python 增強提案),他針對的 Python 代碼格式而編訂的風格指南。
2. 了解 Python 之禪么?
答:通過 import this 語句可以獲取其具體的內容。它告訴大家如何寫出高效整潔的代碼。例如:
避復就簡
Simple is better than complex.
避隱就顯
Explicit is better than implicit.
能不嵌套就不嵌套
Flat is better than nested.
3. 了解 DocStrings 么?
答:
1)DocStrings 文檔字符串是一個重要工具,主要是解釋代碼作用的,幫助你的程序文檔更加簡單易懂。
2)我們可以在函數體的第一行使用一對三個單引號 ‘’’ 或者一對三個雙引號 “”" 來定義文檔字符串。
3)可以使用 doc(注意雙下劃線)調用函數中的文檔字符串屬性。
def function():''' say something here!'''pass
print (function.__doc__) # 調用 doc
輸出結果為:
say something here!
4. 了解類型注解么?
答:
Python是動態語言,變量隨時可以被賦值,且能賦值為不同的類型
Python不是靜態編譯型語言,變量類型是在運行器決定的
動態語言很靈活,但是這種特性也是弊端
def add(x, y):return x + yprint(add(4, 5))print(add('hello', 'world'))add(4, 'hello')
難發現:由于不做任何類型檢查,直到運行期問題才顯現出來,或者線上運行時才能暴露出問題
難使用:函數的使用者看到函數的時候,并不知道你的函數的設計,并不知道應該傳入什么類型的數據
函數注解
- Python 3.5 引入
- 對函數的參數進行類型注解
- 對函數的返回值進行類型注解
- 只對函數參數做一個輔助的說明,并不對函數參數進行類型檢查
- 提供給第三方工具,做代碼分析,發現隱藏的bug
- 函數注解的信息,保存在__annotations__屬性中
def add(x:int , y:int) -> int:''':param x::param y::return:'''return x + y
print(help(add))
print(add.__annotations__)
運行結果
add(x:int, y:int) -> int:param x::param y::return:
None
{'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>}
變量注解
Python 3.6引入。它也只是一種對變量的說明,非強制
i:int = 3
5. 例舉你知道 Python 對象的命名規范,例如方法或者類等
答:
類:總是使用首字母大寫單詞串,如 MyClass。
內部類:可以使用額外的前導下劃線。
變量:小寫,由下劃線連接各個單詞。方法名類似
常量:常量名所有字母大寫 等
函數&方法:函數名應該為小寫,可以用下劃線風格單詞以增加可讀性,如:myfunction, my_example_function。(混合大小寫僅被允許用于這種風格已經占據優勢的時候,以便保持向后兼容。)
函數和方法的參數:總使用“self”作為實例方法的第一個參數。總使用“cls”作為類方法的第一個參數。
如果一個函數的參數名稱和保留的關鍵字沖突,通常使用一個后綴下劃線好于使用縮寫或奇怪的拼寫。
詳情見:python命名規范
6. Python 中的注釋有幾種?
答:總體來說分為兩種,單行注釋和多行注釋。
單行注釋在行首是 #。
多行注釋可以使用三個單引號或三個雙引號,包括要注釋的內容。
7. 如何優雅的給一個函數加注釋?
答:可以使用 docstring 配合類型注解
8. 如何給變量加注釋?
答:可以通過變量名:類型的方式如下
a: str = "this is string type"
9. Python 代碼縮進中是否支持 Tab 鍵和空格混用。
答:不允許 tab 鍵和空格鍵混用,這種現象在使用 sublime 的時候尤為明顯。
一般推薦使用 4 個空格替代 tab 鍵。
10. 是否可以在一句 import 中導入多個庫?
答:可以是可以,但是不推薦。因為一次導入多個模塊可讀性不是很好,所以一行導入一個模塊會比較好。同樣的盡量少用 from modulename import *,因為判斷某個函數或者屬性的來源有些困難,不方便調試,可讀性也降低了。
11. 在給 Py 文件命名的時候需要注意什么?
答:
給文件命名的時候不要和標準庫中的一些模塊重復,比如 abc。
另外要名字要有意義,不建議數字開頭或者中文命名。
12. 例舉幾個規范 Python 代碼風格的工具
答:
自動檢測工具Pylint:一個檢查違反 PEP8 規范和常見錯誤的庫,它會自動查找不符合代碼風格標準和有潛在問題的代碼,并在控制臺輸出代碼中違反規范和出現問題的相關信息。
自動優化工具Black:在眾多代碼格式化工具中,Black算是比較新的一個,它最大的特點是可配置項比較少,個人認為這對于新手來說是件好事,因為我們不必過多考慮如何設置Black,讓 Black 自己做決定就好。
在使用方面,black默認讀取指定python文件并對其進行代碼規范格式化,然后輸出到原文件。