一缩擂、什么是Pillow庫(kù)鼠冕?
Pillow是PIL(Python圖形庫(kù))的一個(gè)友好分支。對(duì)于用戶比PIL更加友好胯盯,對(duì)于任何在圖形領(lǐng)域工作的人是必備的庫(kù)懈费。
二、如何使用Pillow實(shí)現(xiàn)圖像縮放博脑?
在Pillow中圖片的縮放有以下兩種方式憎乙。
(1)使用resize函數(shù)。
(2)使用thumbnail函數(shù)叉趣。
resize函數(shù)可以縮小泞边,也可以放大。
thumbnail只能縮小疗杉,不能放大阵谚,所以如果只打開(kāi)一次圖片,要存出多個(gè)尺寸的話烟具,要么從大到小開(kāi)始縮放梢什。
或者使用resize從大到小開(kāi)始縮放,因?yàn)橛胷esize放大的話朝聋,可以想象那個(gè)馬賽克嗡午。
當(dāng)然,也可以設(shè)置縮放圖片的質(zhì)量(PIL.Image.NEAREST:最低質(zhì)量玖翅;PIL.Image.BILINEAR:雙線性翼馆;PIL.Image.BICUBIC:三次樣條插值;Image.ANTIALIAS:最高質(zhì)量)金度。
三应媚、什么是正則表達(dá)式?談?wù)勀銓?duì)正則表達(dá)式的理解猜极。
正則表達(dá)式(Regular Expression, RE)又稱為正規(guī)表示法或常規(guī)表示法中姜,常常用來(lái)檢索、替換那些符合某個(gè)模式的文本跟伏。它首先設(shè)定好了一些特殊的字及字符組合丢胚,通過(guò)組合的“規(guī)則字符串”來(lái)對(duì)表達(dá)式進(jìn)行過(guò)濾,從而獲取或匹配想要的特定內(nèi)容受扳。它具有靈活携龟、邏輯性和功能性強(qiáng),能迅速地通過(guò)表達(dá)式從字符串中找到所需信息的優(yōu)點(diǎn)勘高,但對(duì)于剛接觸的人來(lái)說(shuō)峡蟋,比較晦澀難懂。
四华望、如何用Python來(lái)進(jìn)行查詢和替換一個(gè)文本字符串蕊蝗?Python中re模塊函數(shù)里面search()和match()函數(shù)有何區(qū)別?
可以使用sub()方法來(lái)進(jìn)行查詢和替換赖舟,sub方法的格式為:
replacement是被替換成的文本蓬戚;
string是需要被替換的文本;
count是一個(gè)可選參數(shù)宾抓,指最大被替換的數(shù)量子漩。
match()函數(shù)只檢測(cè)RE是不是在string的開(kāi)始位置匹配,search()會(huì)掃描整個(gè)string查找匹配石洗,也就是說(shuō)match()只有在0位置匹配成功的話才有返回痛单,如果不是開(kāi)始位置匹配成功的話,match()就返回None劲腿。
五旭绒、Python中如何實(shí)現(xiàn)多線程柒傻?
線程是輕量級(jí)的進(jìn)程欲主,多線程允許一次執(zhí)行多個(gè)線程。眾所周知祭椰,Python是一種多線程語(yǔ)言花椭,它有一個(gè)多線程包忽匈。
GIL(全局解釋器鎖)確保一次執(zhí)行單個(gè)線程。一個(gè)線程保存GIL并在將其傳遞給下一個(gè)線程之前執(zhí)行一些操作矿辽,這就產(chǎn)生了并行執(zhí)行的錯(cuò)覺(jué)丹允。但實(shí)際上郭厌,只是線程輪流在CPU上。當(dāng)然雕蔽,所有傳遞都會(huì)增加執(zhí)行的開(kāi)銷折柠。
六、創(chuàng)建兩個(gè)線程批狐,其中一個(gè)輸出1~52扇售,另外一個(gè)輸出A~Z。輸出格式要求:
12A 34B 56C 78D嚣艇。
七承冰、介紹一下except的用法和作用。
Python的except用來(lái)捕獲所有異常食零,因?yàn)镻ython里面的每次錯(cuò)誤都會(huì)拋出一個(gè)異常困乒,所以每個(gè)程序的錯(cuò)誤都被當(dāng)作一個(gè)運(yùn)行時(shí)錯(cuò)誤。
八贰谣、Python如何捕獲異常顶燕?
Python中捕獲異常可以有三種方式冈爹。
(1)使用try和except語(yǔ)句來(lái)捕獲異常涌攻,具體代碼如下。
捕獲到的IOError錯(cuò)誤的詳細(xì)原因會(huì)被放置在對(duì)象e中频伤,然后運(yùn)行該P(yáng)ython異常處理的except代碼塊捕獲所有的異常恳谎。
(2)用raise語(yǔ)句手動(dòng)引發(fā)一個(gè)異常,具體代碼如下憋肖。
(3)采用sys模塊回溯最后的異常因痛,具體代碼如下。
九岸更、Python到底是什么樣的語(yǔ)言鸵膏?你可以比較其他技術(shù)或者語(yǔ)言來(lái)回答你的問(wèn)題。
Python是解釋型語(yǔ)言怎炊。這意味著不像C和其他語(yǔ)言谭企,Python運(yùn)行前不需要編譯。其他解釋型語(yǔ)言包括PHP和Ruby评肆。Python是動(dòng)態(tài)類型的债查,這意味著你不需要在聲明變量時(shí)指定類型。Python是面向?qū)ο笳Z(yǔ)言瓜挽,所以允許定義類并且可以繼承和組合盹廷。Python沒(méi)有訪問(wèn)標(biāo)識(shí),如在C++中的public久橙、private俄占,在Python中管怠,函數(shù)是一等公民。這就意味著它們可以被賦值缸榄,從其他函數(shù)返回值渤弛,并且傳遞函數(shù)對(duì)象。類不是一等公民碰凶。寫(xiě)Python代碼很快,但是跑起來(lái)會(huì)比編譯型語(yǔ)言慢鹿驼。Python允許使用C擴(kuò)展程序欲低,所以瓶頸可以得到處理。Numpy庫(kù)就是一個(gè)很好的例子畜晰,因?yàn)楹芏啻a不是Python直接寫(xiě)的砾莱,所以運(yùn)行很快。Python使用場(chǎng)景很多:Web應(yīng)用開(kāi)發(fā)凄鼻、自動(dòng)化腊瑟、科學(xué)建模、大數(shù)據(jù)應(yīng)用等块蚌。它也經(jīng)常被看作“膠水”語(yǔ)言闰非,使得不同語(yǔ)言間可以銜接上。Python能夠簡(jiǎn)化工作峭范,使得程序員能夠關(guān)心如何重寫(xiě)代碼而不是詳細(xì)看一遍底層實(shí)現(xiàn)财松。
十、單元測(cè)試是什么纱控?單元測(cè)試有什么好處辆毡?
單元測(cè)試是開(kāi)發(fā)者編寫(xiě)的一小段代碼,用于檢驗(yàn)被測(cè)代碼的一個(gè)很小的甜害、很明確的功能是否正確舶掖。通常而言,一個(gè)單元測(cè)試是用于判斷某個(gè)特定條件(或場(chǎng)景)下某個(gè)特定函數(shù)的行為尔店。單元測(cè)試是用來(lái)對(duì)一個(gè)模塊眨攘、一個(gè)函數(shù)或者一個(gè)類來(lái)進(jìn)行正確性檢驗(yàn)的測(cè)試工作。
單元測(cè)試從長(zhǎng)期來(lái)看嚣州,可以提高代碼質(zhì)量期犬,減少維護(hù)成本,降低重構(gòu)難度避诽。通過(guò)單元測(cè)試我們能快速熟悉代碼龟虎,不需要深入地閱讀代碼,便能知道這段代碼做什么工作沙庐,有哪些特殊情況需要考慮鲤妥,包含哪些業(yè)務(wù)佳吞。