基礎
-
解釋型語言和編譯型語言的區別
a) 編譯型語言是在運行之前對源碼進行編譯,使其成為機器可以識別的機器語言
b) 解釋型語言不需要編譯,而是在語句執行時候才將語句翻譯為機器語言
c)解釋型語言相對于編譯型語言來說由于執行時候需要翻譯,因此效率比較低 -
Python 解釋器種類和特點
a)CPython(使用最廣)
b)IPython(交互式解釋器)
c)PyPy(顯著提高執行效率)
d)Jpython
e)IronPython -
位和字節的關系
a)1 byte = 8 bits -
Python進制轉換
a)使用int() 十進制:二進制
b)hex() 十六進制
c)bin() 二進制
d)oct() 八進制 -
Python遞歸的最大層數?
a) 998
b)可以通過一下代碼來設置sys . setrecursionlimit ( )
-
ascii、unicode、utf-8、gbk的區別
a)ascii是英語字符和二進制數之間的關系。一共規定了128個字符的編碼
b)Unicode是一個更大的字符和二進制之前的對應關系,一共容納100多萬個字符
c)UTF-8是Unicode最廣的實現方式
d)gbk? -
字節碼和機器碼的區別?
a)機器碼是機器可以識別,可以直接在機器上運行的二進制
b)字節碼來自源碼,由編譯器編譯源碼而形成的二進制文件,可以在不同的運行環境中,通過虛擬運行環境來在機器上執行 -
三元運算規則
a)condistion_true if condition else condistion_false
b) -
用一行代碼實現數值交換
a)a, b = b, a -
xrange 和 range的區別
a)xrange 生成的是一個生成器,range生成的是一個list對象
b)要生成很大的數字序列的時候,使用xrange會比使用range性能更優 -
lambda 表達式格式以及應用場景
a)lambda x: func_body
b)常用來作為函數參數輸入函數,像是作為sort的key parameter -
pass的作用
a)作為占位符,來保證程序結構的完整性 -
*args 和 **kwarg 的作用
a)*args 是用來傳入任意數量的位置參數
b)*kwarg是傳入任意數量的關鍵字參數 -
is 和 ==的區別
a)is 和==都是用來 比較python對象的
b)python對象包含三個基本元素, id, type(數據類型), value(值)
c)is 比較對象id, 判斷對象是否為同一實例對象,是否指向同一內存地址
e)== 判斷是,兩個對象的內容是否相等 -
python的深淺拷貝和應用場景
a)淺拷貝:創造新的對象
b)深拷貝:使用舊的對象
c)copy.copy() 創造淺拷貝, 注意有的時候會是深拷貝
d)copy.deepcopy() 創造深拷貝 -
Python 的垃圾回收機制
a) 引用計數機制為主,標記-清除和分代收集為輔 -
常見的內置函數
a)abs(), all(), set(), any(), dict(), dir(),
b)enumerate(), eval()
c)filter(), map(), float(), input(), len(),
e) open(),round(), sorted() -
python可變類型和不可變類型
a)string, tuple, number 是不可變的
b)list,dict是可變的
對不可變對象賦值,是重新創建一個對象,并將指針指向新的對象,并銷毀舊有對象
對可變對象,是在同一內存地址,在原處修改
因此可變對象作為函數參數時候,要小心在函數內對可變對象的修改 -
re模塊中match 和 search的區別
a)match是從字符串開始位置檢測,如果開始位置不符合則返回
b)search會從任意位置開始檢測(搜索整個字符串),直到發現符合的再返回
c)match比search的速度快 -
什么是正則表達式的貪婪匹配?
a)在整個表達式匹配成功的前提下,盡可能多的去匹配,有多少要多少,盡可能多的 - ()會產生生成器,[]會產生列表
-
可變類型作為函數默認參數
a)默認參數只是在函數定義的時候被初始化一次,而且因為是可變類型,因此全局只保存一個實例,所以任何在默認參數上的操作都會反映到指向他的對象上
b)如果要使用object作為默認參數,盡量使用None,而不是相關類型 -
一行實現刪除列表中重復元素
a) 元素位置會被打亂list_item = [ 1 , 1 , 2 , 3 , 3 ] print ( list ( set ( list_item ) )
list_item = [ 1 , 1 , 2 , 2 , 3 ] print ( sorted ( set ( list_item ) , keys = list_item . index ) ) ```
-
如何在函數中設置全局變量?
a)使用global關鍵字 - 如何用代碼實現stack
class
Stack
(
object
)
:
def
__init__
(
self
)
:
self
.
items
=
[
]
def
is_empty
(
self
)
:
return
self
.
items
==
[
]
def
size
(
self
)
:
return
len
(
self
.
items
)
def
pop
(
self
)
:
return
self
.
items
.
pop
(
)
def
push
(
self
,
val
)
:
return
self
.
items
.
append
(
val
)
-
如何生成一個隨機數
a)random package
random.randint(start, end)
random.choice(seq)
random.choices(seq, k)
random.sample(seq, k)
random.random() float number from 0 to 1
b) numpy.random package -
常用的字符串格式化
a)用數字指定位置
b)為位置命名,可以傳入字典變量
c)可以傳入對象,并調用對象屬性
d){:.2f}
e) {:+.2f}
f) {:0 > 2d}數字左邊補零,寬度為2
g) {:0<4d} 數字右邊補零,寬度為4
h) {:,} 用逗號分隔數字
i) {:.2 %}百分比格式
k) {:.2e} 指數計數法格式
l){:10d}, {:<10d}, {:^10d}, 右對齊,左對齊,中間對齊 -
functools中的函數作用?
a)作用于一些定義好的函數,幫助我們更好的實現對函數的包裝和實用 -
實例方法,靜態方法和類方法的區別和應用
a)參數不同,實例方法參數必須有self, 類方法必須有cls, 靜態方法可以啥也沒有
b)繼承時,子類調用父類靜態方法,調用的是父類的雷屬性,而調用類方法時,調用的是子類的類屬性 -
如何判斷變量是否為nan
a)==不能夠使用,可以使用is,但有時候會出錯
b)最好使用math中的isnan, math.isnan() -
列舉面向對象中的特殊成員以及應用場景
a)成員
a. __dict__成員:以字典的方式來獲取類或對象中的所有成員
b)方法
b. __call__方法:執行對象的構造方法
c. getitem (self, item): 類似于一種運算符重載(重載[]運算符)
d. setitem (self, key, item): 設置對象的相關屬性
e. delitem (self, key): 刪除對象相關屬性
f. iter (self): 保證對象可以被for循環迭代,這樣每次產生一個元素 -
python反射(自省?)
a)我們需要執行對象的某個方法或對對象的某個屬性賦值,但是方法名和屬性名在調用的時候不知道。因此我們需要通過某個機制來訪問未知的屬性,反射就是這樣的一個機制
b)dir(obj) 返回對象的屬性名列表
c)hasattr(obj, attr) 判斷對象是否有一個attr的屬性
d)getattr(obj, attr) 返回對象的屬性值
e)setattr(obj, attr, val) 為對象賦相應的屬性值
f)inspect模塊提供了一系列函數來幫助我們實現自省機制 - 判斷是函數還是方法?
-
metaclass 作用?
a)原類將用在創建使用了它的新類調用中
b)包裝類的所有方法,用以日志記錄或者性能剖析
c)自動mix-in新方法(不在需要編寫mix類) -
單例模式
a)使用模塊,模塊在第一次導入時,會生成.pyc文件,當第二次導入時,就會加載.pyc文件,因此我們將需要維持一個單例的對象在模塊中創建,則對象將維持同一單例
b)__new__使用該方法來創建實例對象Class Singleton ( object ) : _instance = None def __new__ ( cls , * args , ** kwargs ) : if cls . _instance is not None : cls . _instance = object . __new__ ( cls , * args , ** kwargs ) return cls . _instance
c)使用裝飾器
通過定義singleton裝飾器來對相應的類進行裝飾,從而使某個類只能夠產生一個類
d)使用元類來實現單例模式,通過改變類的元類屬性來改變類的創建方法class MyClass ( metaclass = Singleton ) : pass
- 裝飾器的寫法(函數裝飾器,類裝飾器)
- 異常處理的寫法,以及如何主動拋出異常
- 什么是面向對象的MRO
- 利用json序列化時候,可以處理的數據類型有哪些?如果拓展自定義數據類型使其支持json序列化
- 什么是斷言
-
with 語句的好處,以及為什么使用with語句
(未完待續)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
