python3-開發面試題(python)6.23基礎篇(2)
1、請至少列舉5個 PEP8 規範(越多越好)。
一、代碼編排
1、縮進。4個空格的縮進,不使用Tap,更不能混合使用Tap和空格
2、每行最大長度79,換行可以使用反斜杠,最好使用圓括號。換行點要在操作符的後邊敲回車
二、文檔編排
1、不要在一句import中多個庫,比如import 歐式,sys
三、空格的使用
總體原則,避免不必要的空格
四、註釋
1、總體原則,錯誤的註釋不如沒有註釋,當一段代碼發生變化時,第一件事就是要修改註釋!
2、註釋必須使用英文,最好是完整的句子,首字母要大寫的。
3、避免無謂的註釋
五、命名規範
類的方法第一個參數必須是self,而靜態方法第一個參數必須是cls
遵循python的變量的命名規範。
六、編碼建議
1、編碼中考慮是他python實現的效率等問題,比如運算符‘+’在Jpython中效率卻非常低,采用。join()的方式
2、字符串不要以空格收尾
3、使用startwith() and endswith() 代替切片進行序列前綴或後綴的檢查
4、使用isinstance()比較對象的類型:
5、判斷序列空與不空,if not 條件,優於if 條件
2、通過代碼實現如下轉換:
二進制轉換成十進制:v = “0b1111011”?
int(v,2)
十進制轉換成二進制:v = 18?
bin(v)
八進制轉換成十進制:v = “011”?
int(v,8)
十進制轉換成八進制:v = 30?
oct(v)
十六進制轉換成十進制:v = “0x12”?
int(v,16)
十進制轉換成十六進制:v = 87
hex(v)
3、python遞歸的最大層數?
在pycharm中 遞歸的最大層數是1000次,無限制的遞歸調用自己是沒有意義的
1、遞歸必須要有一個明確的結束條件
2、每次進入更深一層遞歸時,問題規模相比上次遞歸都有應有所減少
3、遞歸效率不高,遞歸層次過多會導致棧溢出
import sys sys.setrecursionlimit(遞歸的最大次數)
4、求結果:
v1 = 1 or 3?
1
v2 = 1 and 3?
3
v3 = 0 and 2 and 1
0
? v4 = 0 and 2 or 1
1
? v5 = 0 and 2 or 1 or 4
1
? v6 = 0 or Flase and 1
1
詳細過程可以點擊這裏:https://www.cnblogs.com/ManyQian/p/9216815.html
5、ascii、unicode、utf-8、gbk 區別?
ascii : 8bit=1bytes,一個英文字符占用1個字節 範圍基本只有英文字母、數字和一些特殊字符,只有256個字符
gbk 編碼漢字的: 16bit=2bytes 2個字節表示一個中文字節,1個字節表示英文字節
unicode全世界的所有字節(內存中固定的編碼):16bit=2bytes,2個字節表示一個字符,中文也是2個字節
utf-8萬國碼:1字節表示一個英文字符,3bytes表示一個中文字符
6、字節碼和機器碼的區別?
字節碼是一種中間碼和二進制代碼(文件),需要直譯器轉譯後成為機器碼
字節碼:字節碼通常指的是已經經過編譯的源碼,字節碼的實現方式是通過編譯器和虛擬機器
機器碼:機器語言是一種指令集的體系,這種指令集就是機器碼,是電腦cpu可以直接解讀的數據
計算機可以直接執行,並且執行速度最快的代碼
解釋性語言:程序---》字節碼-----》機器碼 根據具體系統在編譯為機器語言
編譯型語言:程序----》機器碼
7、三元運算規則以及應用場景?
三元運算符的功能與‘if ...else’流程語句一致,它在一行中書寫,代碼非常精練,執行效率更高
嵌套使用的三元運算符可讀性不太好,日後對代碼的維護極可能存在問題
8、列舉 Python2和Python3的區別?
1、print被視為一個語句而不是一個函數
2、整數的除法,2.7不直觀
3、支持Unicode 2.7默認ASCII 3中默認Unicode
4、後續發展 2.7官方沒有後續支持,3才是正統
python3-開發面試題(python)6.23基礎篇(2)