一、語言特性
1. 談談對 Python 和其他語言的區別
答:Python 是一門語法簡潔優美,功能強大無比,應用領域非常廣泛,具有強大完備的第三方庫,他是一門強類型的可移植、可擴展,可嵌入的解釋型編程語言,屬於動態語言。
拿 C 語言和 Python 比: Python 的第三方類庫比較齊全並且使用簡潔,很少代碼就能實現一些功能,如果用 C 去實現相同的功能可能就比較復雜。但是對於速度來說 Python 的運行速度相較於 C 就比較慢了。所以有利的同時也有弊端,畢竟我們的學習成本降低了。
2. 簡述解釋型和編譯型編程語言
答:解釋型語言是在運行程序的時候才翻譯,每執行一次,要翻譯一次,效率較低。 編譯型就是直接編譯成機型可以執行的,只翻譯一次,所以效率相對來說較高。
3. Python 的解釋器種類以及相關特點?
答:C Python c 語言開發的,使用最廣的解釋器
IPython 基於 cPython 之上的一個交互式計時器,交互方式增強功能和 cPython 一樣
PyPy 目標是執行效率,采用 JIT 技術。對 Python 代碼進行動態編譯,提高執行效率
JPython 運行在 Java 上的解釋器,直接把 Python 代碼編譯成 Java 字節碼執行
IronPython 運行在微軟 .NET 平台上的解釋器,把 Python 編譯成 . NET 的字節碼。
4. Python3 和 Python2 的區別?
答: 這里例舉 5 條
print 在 Python3 中是函數必須加括號,Python2 中 print 為 class。
Python2 中使用 xrange,Python3 使用 range。
Python2 中默認的字符串類型默認是 ASCII,Python3 中默認的字符串類型是 Unicode。
Python2 中/的結果是整型,Python3 中是浮點類型。
Python2 中聲明元類:_metaclass_ = MetaClass,Python3 中聲明元類:class newclass(metaclass=MetaClass):pass。
5. Python3 和 Python2 中 int 和 long 區別?
答:Python2 有 int 和 long 類型。int 類型最大值不能超過 sys.maxint,而且這個最大值是平台相關的。可以通過在數字的末尾附上一個L來定義長整型,顯然,它比 int 類型表示的數字范圍更大。在 Python3 里,只有一種整數類型 int,大多數情況下,和 Python2中的長整型類似。
6. xrange 和 range 的區別?
答:xrange 是在 Python2 中的用法,Python3 中只有 range xrange 用法與 range 完全相同,所不同的是生成的不是一個 list 對象,而是一個生成器。
二、編碼規范
7. 什么是 PEP8?
答:PEP8 通常會聽別人提到,但是具體的指什么內容呢,簡單介紹下。 《Python Enhancement Proposal #8》(8 號 Python 增強提案)又叫 PEP8,他針對的 Python 代碼格式而編訂的風格指南。
8. 了解 Python 之禪么?
答:通過 import this 語句可以獲取其具體的內容。它告訴大家如何寫出高效整潔的代碼。
9.了解DocStrings么?
答:DocStrings 文檔字符串是一個重要工具,用於解釋文檔程序,幫助你的程序文檔更加簡單易懂。主要是解釋代碼作用的。
10.了解類型注解嗎?
答:PEP 484 引入了類型提示,這使得可以對 Python 代碼進行靜態類型檢查。 在使用 Ide 的時候可以獲取到參數的類型,更方便傳入參數。使用格式如下
def foo(num: int) -> None:
print(f"接收到的數字是:")
介紹下這個簡單例子,我們可以在函數的參數部分使用參數名+:+類型,來指定參數可以接受的類型,這里的話就是 num 參數為 int 類型,然后后面->接的是返回值的類型。這里返回值為 None,然后通過 fstring 格式化字符串輸出傳入的數字。
11.例舉你知道 Python 對象的命名規范,例如方法或者類等
答:類:總是使用首字母大寫單詞串,如 MyClass。內部類可以使用額外的前導下划線。 變量:小寫,由下划線連接各個單詞。方法名類似 常量:常量名所有字母大寫 等
12.Python 中的注釋有幾種?
答:總體來說分為兩種,單行注釋和多行注釋。
單行注釋在行首是 # 。
多行注釋可以使用三個單引號或三個雙引號,包括要注釋的內容。
13.如何優雅的給一個函數加注釋?
答:可以使用 docstring 配合類型注解
14.如何給變量加注釋?
可以通過變量名:類型的方式如下
a: str = "this is string type"
15.Python 代碼縮進中是否支持 Tab 鍵和空格混用。
答:不允許 tab 鍵和空格鍵混用,這種現象在使用 sublime 的時候尤為明顯。
一般推薦使用 4 個空格替代 tab 鍵。
16.是否可以在一句 import 中導入多個庫?
答:可以是可以,但是不推薦。因為一次導入多個模塊可讀性不是很好,所以一行導入一個模塊會比較好。同樣的盡量少用 from modulename import *,因為判斷某個函數或者屬性的來源有些困難,不方便調試,可讀性也降低了。
17.在給 Py 文件命名的時候需要注意什么?
答:給文件命名的時候不要和標准庫庫的一些模塊重復,比如 abc。 另外要名字要有意義,不建議數字開頭或者中文命名。
18.例舉幾個規范 Python 代碼風格的工具
答:pylint 和 flake8