全程干貨氏义,多刷幾遍,不管是面試還是對(duì)自己的Python水平都有很大的幫助图云!喜歡的小伙伴可以轉(zhuǎn)發(fā)一下哦惯悠,筆芯~
1、一行代碼實(shí)現(xiàn)1--100之和
利用sum()函數(shù)求和
2琼稻、如何在一個(gè)函數(shù)內(nèi)部修改全局變量
利用global 修改全局變量
3吮螺、列出5個(gè)python標(biāo)準(zhǔn)庫(kù)
os:提供了不少與操作系統(tǒng)相關(guān)聯(lián)的函數(shù)
sys: 通常用于命令行參數(shù)
re: 正則匹配
math: 數(shù)學(xué)運(yùn)算
datetime:處理日期時(shí)間
4饶囚、字典如何刪除鍵和合并兩個(gè)字典
del和update方法
5帕翻、談下python的GIL
GIL 是python的全局解釋器鎖鸠补,同一進(jìn)程中假如有多個(gè)線程運(yùn)行,一個(gè)線程在運(yùn)行python程序的時(shí)候會(huì)霸占python解釋器(加了一把鎖即GIL)嘀掸,使該進(jìn)程內(nèi)的其他線程無(wú)法運(yùn)行紫岩,等該線程運(yùn)行完后其他線程才能運(yùn)行。如果線程運(yùn)行過(guò)程中遇到耗時(shí)操作睬塌,則解釋器鎖解開泉蝌,使其他線程運(yùn)行。所以在多線程中揩晴,線程的運(yùn)行仍是有先后順序的勋陪,并不是同時(shí)進(jìn)行。
多進(jìn)程中因?yàn)槊總€(gè)進(jìn)程都能被系統(tǒng)分配資源硫兰,相當(dāng)于每個(gè)進(jìn)程有了一個(gè)python解釋器诅愚,所以多進(jìn)程可以實(shí)現(xiàn)多個(gè)進(jìn)程的同時(shí)運(yùn)行,缺點(diǎn)是進(jìn)程系統(tǒng)資源開銷大劫映。
6违孝、python實(shí)現(xiàn)列表去重的方法
先通過(guò)集合去重,在轉(zhuǎn)列表
7泳赋、fun(args,kwargs)中的args,kwargs什么意思雌桑?
8、python2和python3的range(100)的區(qū)別
python2返回列表祖今,python3返回迭代器校坑,節(jié)約內(nèi)存
9、一句話解釋什么樣的語(yǔ)言能夠用裝飾器?
函數(shù)可以作為參數(shù)傳遞的語(yǔ)言衅鹿,可以使用裝飾器
10撒踪、python內(nèi)建數(shù)據(jù)類型有哪些
整型--int
布爾型--bool
字符串--str
列表--list
元組--tuple
字典--dict
11、簡(jiǎn)述面向?qū)ο笾?strong>new和init區(qū)別
init是初始化方法大渤,創(chuàng)建對(duì)象后制妄,就立刻被默認(rèn)調(diào)用了,可接收參數(shù)泵三,如圖
1耕捞、new至少要有一個(gè)參數(shù)cls,代表當(dāng)前類烫幕,此參數(shù)在實(shí)例化時(shí)由Python解釋器自動(dòng)識(shí)別
2俺抽、new必須要有返回值,返回實(shí)例化出來(lái)的實(shí)例较曼,這點(diǎn)在自己實(shí)現(xiàn)new時(shí)要特別注意磷斧,可以return父類(通過(guò)super(當(dāng)前類名, cls))new出來(lái)的實(shí)例,或者直接是object的new出來(lái)的實(shí)例
3、init有一個(gè)參數(shù)self弛饭,就是這個(gè)new返回的實(shí)例冕末,init在new的基礎(chǔ)上可以完成一些其它初始化的動(dòng)作,init不需要返回值
4侣颂、如果new創(chuàng)建的是當(dāng)前類的實(shí)例档桃,會(huì)自動(dòng)調(diào)用init函數(shù),通過(guò)return語(yǔ)句里面調(diào)用的new函數(shù)的第一個(gè)參數(shù)是cls來(lái)保證是當(dāng)前類實(shí)例憔晒,如果是其他類的類名藻肄,;那么實(shí)際創(chuàng)建返回的就是其他類的實(shí)例拒担,其實(shí)就不會(huì)調(diào)用當(dāng)前類的init函數(shù)嘹屯,也不會(huì)調(diào)用其他類的init函數(shù)。
12从撼、簡(jiǎn)述with方法打開處理文件幫我我們做了什么抚垄?
打開文件在進(jìn)行讀寫的時(shí)候可能會(huì)出現(xiàn)一些異常狀況,如果按照常規(guī)的f.open
寫法谋逻,我們需要try,except,finally呆馁,做異常判斷,并且文件最終不管遇到什么情況毁兆,都要執(zhí)行finally f.close()關(guān)閉文件浙滤,with方法幫我們實(shí)現(xiàn)了finally中f.close
(當(dāng)然還有其他自定義功能,有興趣可以研究with方法源碼)
13气堕、列表[1,2,3,4,5],請(qǐng)使用map()函數(shù)輸出[1,4,9,16,25]纺腊,并使用列表推導(dǎo)式提取出大于10的數(shù),最終輸出[16,25]
map()函數(shù)第一個(gè)參數(shù)是fun茎芭,第二個(gè)參數(shù)是一般是list揖膜,第三個(gè)參數(shù)可以寫list,也可以不寫梅桩,根據(jù)需求
14壹粟、python中生成隨機(jī)整數(shù)、隨機(jī)小數(shù)宿百、0--1之間小數(shù)方法
隨機(jī)整數(shù):random.randint(a,b),生成區(qū)間內(nèi)的整數(shù)
隨機(jī)小數(shù):習(xí)慣用numpy庫(kù)趁仙,利用np.random.randn(5)生成5個(gè)隨機(jī)小數(shù)
0-1隨機(jī)小數(shù):random.random(),括號(hào)中不傳參
15、避免轉(zhuǎn)義給字符串加哪個(gè)字母表示原始字符串垦页?
r , 表示需要原始字符串雀费,不轉(zhuǎn)義特殊字符
16、<div class="nam">中國(guó)</div>痊焊,用正則匹配出標(biāo)簽里面的內(nèi)容(“中國(guó)”)盏袄,其中class的類名是不確定的
17忿峻、python中斷言方法舉例
assert()方法,斷言成功辕羽,則程序繼續(xù)執(zhí)行炭菌,斷言失敗,則程序報(bào)錯(cuò)
18逛漫、數(shù)據(jù)表student有id,name,score,city字段,其中name中的名字可有重復(fù)赘艳,需要消除重復(fù)行,請(qǐng)寫sql語(yǔ)句
select distinct name from student
19酌毡、10個(gè)Linux常用命令
ls pwd cd touch rm mkdir tree cp mv cat more grep echo
20、python2和python3區(qū)別蕾管?列舉5個(gè)
1枷踏、Python3 使用 print 必須要以小括號(hào)包裹打印內(nèi)容,比如 print('hi')
Python2 既可以使用帶小括號(hào)的方式掰曾,也可以使用一個(gè)空格來(lái)分隔打印內(nèi)容旭蠕,比如 print 'hi'
2、python2 range(1,10)返回列表旷坦,python3中返回迭代器掏熬,節(jié)約內(nèi)存
3、python2中使用ascii編碼秒梅,python中使用utf-8編碼
4旗芬、python2中unicode表示字符串序列,str表示字節(jié)序列
python3中str表示字符串序列捆蜀,byte表示字節(jié)序列
5疮丛、python2中為正常顯示中文,引入coding聲明辆它,python3中不需要
6誊薄、python2中是raw_input()函數(shù),python3中是input()函數(shù)
21锰茉、列出python中可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型呢蔫,并簡(jiǎn)述原理
不可變數(shù)據(jù)類型:數(shù)值型、字符串型string和元組tuple
不允許變量的值發(fā)生變化飒筑,如果改變了變量的值咐刨,相當(dāng)于是新建了一個(gè)對(duì)象,而對(duì)于相同的值的對(duì)象扬霜,在內(nèi)存中則只有一個(gè)對(duì)象(一個(gè)地址)定鸟,如下圖用id()方法可以打印對(duì)象的id
可變數(shù)據(jù)類型:列表list和字典dict;
允許變量的值發(fā)生變化著瓶,即如果對(duì)變量進(jìn)行append联予、+=等這種操作后,只是改變了變量的值,而不會(huì)新建一個(gè)對(duì)象沸久,變量引用的對(duì)象的地址也不會(huì)變化季眷,不過(guò)對(duì)于相同的值的不同對(duì)象,在內(nèi)存中則會(huì)存在不同的對(duì)象卷胯,即每個(gè)對(duì)象都有自己的地址子刮,相當(dāng)于內(nèi)存中對(duì)于同值的對(duì)象保存了多份,這里不存在引用計(jì)數(shù)窑睁,是實(shí)實(shí)在在的對(duì)象挺峡。
22、s = "ajldjlajfdljfddd"担钮,去重并從小到大排序輸出"adfjl"
set去重橱赠,去重轉(zhuǎn)成list,利用sort方法排序,reeverse=False是從小到大排
list是不 變數(shù)據(jù)類型箫津,s.sort時(shí)候沒有返回值狭姨,所以注釋的代碼寫法不正確
23、用lambda函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)相乘
24苏遥、字典根據(jù)鍵從小到大排序
dict={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}
25饼拍、利用collections庫(kù)的Counter方法統(tǒng)計(jì)字符串每個(gè)單詞出現(xiàn)的次數(shù)"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
26、字符串a(chǎn) = "not 404 found 張三 99 深圳"田炭,每個(gè)詞中間是空格惕耕,用正則過(guò)濾掉英文和數(shù)字,最終輸出"張三 深圳"
順便貼上匹配小數(shù)的代碼诫肠,雖然能匹配司澎,但是健壯性有待進(jìn)一步確認(rèn)
27、filter方法求出列表所有奇數(shù)并構(gòu)造新列表栋豫,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filter() 函數(shù)用于過(guò)濾序列挤安,過(guò)濾掉不符合條件的元素,返回由符合條件元素組成的新列表丧鸯。該接收兩個(gè)參數(shù)蛤铜,第一個(gè)為函數(shù),第二個(gè)為序列丛肢,序列的每個(gè)元素作為參數(shù)傳遞給函數(shù)進(jìn)行判围肥,然后返回 True 或 False,最后將返回 True 的元素放到新列表
28蜂怎、列表推導(dǎo)式求列表所有奇數(shù)并構(gòu)造新列表穆刻,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
29、正則re.complie作用
re.compile是將正則表達(dá)式編譯成一個(gè)對(duì)象杠步,加快速度氢伟,并重復(fù)使用
30榜轿、a=(1,)b=(1)朵锣,c=("1") 分別是什么類型的數(shù)據(jù)谬盐?