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

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