2025年P(guān)ython整體復(fù)習(xí)試題及答案_第1頁
2025年P(guān)ython整體復(fù)習(xí)試題及答案_第2頁
2025年P(guān)ython整體復(fù)習(xí)試題及答案_第3頁
2025年P(guān)ython整體復(fù)習(xí)試題及答案_第4頁
2025年P(guān)ython整體復(fù)習(xí)試題及答案_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

2025年P(guān)ython整體復(fù)習(xí)試題及答案一、選擇題(每題3分,共24分)1.以下代碼執(zhí)行后輸出結(jié)果是()```pythona=[1,2,3]b=ab.append(4)print(a)```A.[1,2,3]B.[1,2,3,4]C.報(bào)錯(cuò)D.[1,2,4]2.關(guān)于Python的作用域,以下說法錯(cuò)誤的是()A.函數(shù)內(nèi)部可以直接訪問全局變量B.使用nonlocal關(guān)鍵字可以修改外層函數(shù)的變量C.類內(nèi)部定義的變量一定是實(shí)例屬性D.局部變量在函數(shù)執(zhí)行結(jié)束后會(huì)被銷毀3.執(zhí)行`importcopy;a=[1,[2,3]];b=copy.copy(a);b[1].append(4);print(a)`,輸出結(jié)果是()A.[1,[2,3]]B.[1,[2,3,4]]C.[1,[2,4]]D.報(bào)錯(cuò)4.提供器函數(shù)中使用`yield`和`return`的主要區(qū)別是()A.yield返回單個(gè)值,return返回多個(gè)值B.yield暫停函數(shù)并保存狀態(tài),return結(jié)束函數(shù)C.yield只能用于提供器,return只能用于普通函數(shù)D.yield可以多次調(diào)用,return只能調(diào)用一次5.以下異常處理代碼中,`finally`塊的執(zhí)行時(shí)機(jī)是()```pythontry:1/0exceptZeroDivisionError:print("錯(cuò)誤")finally:print("結(jié)束")```A.僅當(dāng)try塊無異常時(shí)執(zhí)行B.僅當(dāng)except塊執(zhí)行后執(zhí)行C.無論是否發(fā)生異常都會(huì)執(zhí)行D.僅當(dāng)try塊有異常時(shí)執(zhí)行6.以下f-string格式化正確的是()A.`name="張三";f"年齡{age=20}"`B.`value=3.1415;f"保留兩位小數(shù){value:.2f}"`C.`num=100;f"十六進(jìn)制{num:o}"`D.`data={"a":1};f"字典值{data[a]}"`7.定義類`classA:x=0`,創(chuàng)建`obj1=A();obj2=A();obj1.x=1`后,`A.x`和`obj2.x`的值分別是()A.0和0B.1和0C.0和1D.1和18.以下lambda表達(dá)式能正確實(shí)現(xiàn)兩數(shù)相加的是()A.`add=lambdax,y:x+y`B.`add=lambdax,y:returnx+y`C.`add=lambda:x+y`D.`add=lambdax,y:(x+y)`二、填空題(每題4分,共20分)9.用列表推導(dǎo)式提供1-10中所有偶數(shù)的平方列表:____________________。10.提供器表達(dá)式計(jì)算1-5的平方和(結(jié)果為55):`sum(__________)`。11.字典推導(dǎo)式將字典`{"a":1,"b":2}`的鍵值反轉(zhuǎn)(結(jié)果為{1:"a",2:"b"}):____________________。12.正則表達(dá)式匹配郵箱(需包含@和.,且.在@之后)的模式字符串:____________________。13.子類中調(diào)用父類構(gòu)造方法時(shí),`super(SubClass,self).__init__()`的等價(jià)寫法是____________________(Python3+)。三、簡(jiǎn)答題(每題8分,共32分)14.簡(jiǎn)述裝飾器的作用及實(shí)現(xiàn)原理。要求說明裝飾器如何在不修改原函數(shù)代碼的情況下擴(kuò)展功能,并舉例說明典型應(yīng)用場(chǎng)景。15.解釋GIL(全局解釋器鎖)對(duì)Python多線程的影響。說明為什么CPU密集型任務(wù)不適合用多線程,而IO密集型任務(wù)可以?16.提供器相比列表的主要優(yōu)點(diǎn)是什么?在處理大文件時(shí),提供器為何更高效?17.對(duì)比異步編程(async/await)與多線程的區(qū)別。說明在高并發(fā)IO場(chǎng)景下,哪種方式更有優(yōu)勢(shì)?四、編程題(共74分)18.(15分)使用requests庫爬取"/products"頁面,要求:-設(shè)置請(qǐng)求頭`User-Agent`為"Mozilla/5.0"-處理可能的網(wǎng)絡(luò)異常(如連接超時(shí)、404錯(cuò)誤)-用BeautifulSoup提取頁面中所有`<h2>`標(biāo)簽的文本內(nèi)容,保存到列表`product_titles`中。19.(20分)現(xiàn)有訂單數(shù)據(jù)集`orders.csv`(字段:訂單號(hào)、用戶ID、金額、時(shí)間、狀態(tài)),用pandas完成以下操作:-讀取數(shù)據(jù)并過濾出狀態(tài)為"已支付"且金額大于100的記錄-按用戶ID分組,計(jì)算每個(gè)用戶的總消費(fèi)金額和訂單數(shù)量-將結(jié)果保存為`user_summary.csv`,包含字段:用戶ID、總金額、訂單數(shù)20.(18分)實(shí)現(xiàn)一個(gè)裝飾器`log_decorator`,要求:-記錄函數(shù)的調(diào)用時(shí)間(格式:YYYY-MM-DDHH:MM:SS)-記錄函數(shù)的參數(shù)和返回值-輸出到日志文件`function_log.txt`,每行格式:[時(shí)間]函數(shù)名(參數(shù))=返回值21.(21分)用asyncio實(shí)現(xiàn)異步文件讀取程序,要求:-異步讀取3個(gè)文件(`file1.txt`、`file2.txt`、`file3.txt`)-每個(gè)文件讀取完成后立即打印"已讀取:文件名"-所有文件讀取完成后打印"全部讀取完成"-需處理文件不存在的異常(輸出"文件不存在:文件名")答案一、選擇題1.B2.C3.B4.B5.C6.B7.A8.A二、填空題9.`[x2forxinrange(1,11)ifx%2==0]`10.`(x2forxinrange(1,6))`11.`{v:kfork,vin{"a":1,"b":2}.items()}`12.`r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'`13.`super().__init__()`三、簡(jiǎn)答題14.裝飾器是用于擴(kuò)展函數(shù)功能的可調(diào)用對(duì)象,通過將原函數(shù)包裝在另一個(gè)函數(shù)中實(shí)現(xiàn)。原理是利用函數(shù)可作為參數(shù)傳遞的特性,返回一個(gè)新函數(shù)替代原函數(shù)。典型場(chǎng)景如日志記錄(記錄函數(shù)調(diào)用信息)、性能測(cè)試(統(tǒng)計(jì)函數(shù)執(zhí)行時(shí)間)、權(quán)限驗(yàn)證(檢查用戶是否有權(quán)限調(diào)用函數(shù))。例如:```pythondeflog_decorator(func):defwrapper(args,kwargs):print(f"調(diào)用{func.__name__}")returnfunc(args,kwargs)returnwrapper@log_decoratordefadd(a,b):returna+b```15.GIL是Python解釋器為保證線程安全而設(shè)置的全局鎖,同一時(shí)間僅允許一個(gè)線程執(zhí)行Python字節(jié)碼。對(duì)CPU密集型任務(wù),多線程因GIL無法利用多核優(yōu)勢(shì),線程間頻繁切換甚至導(dǎo)致效率低于單線程;而IO密集型任務(wù)中線程大部分時(shí)間等待IO(如網(wǎng)絡(luò)請(qǐng)求、文件讀寫),此時(shí)GIL會(huì)釋放,其他線程可執(zhí)行,因此多線程有效。16.提供器的主要優(yōu)點(diǎn)是惰性計(jì)算(按需提供數(shù)據(jù)),節(jié)省內(nèi)存。處理大文件時(shí),列表會(huì)一次性加載所有數(shù)據(jù)到內(nèi)存,可能導(dǎo)致內(nèi)存溢出;提供器逐行讀取,每次僅保留當(dāng)前行數(shù)據(jù),適合處理GB級(jí)大文件。例如:```python列表方式(內(nèi)存占用大)withopen("big.txt")asf:lines=[line.strip()forlineinf]提供器方式(內(nèi)存友好)defread_big_file(path):withopen(path)asf:whileTrue:line=f.readline()ifnotline:breakyieldline.strip()```17.異步編程通過事件循環(huán)調(diào)度協(xié)程,利用IO等待時(shí)間執(zhí)行其他任務(wù),無需創(chuàng)建線程/進(jìn)程,資源消耗低;多線程需創(chuàng)建獨(dú)立線程,存在線程切換開銷。高并發(fā)IO場(chǎng)景(如百萬級(jí)HTTP請(qǐng)求)中,異步編程因無線程開銷,能支撐更高并發(fā)量;多線程受限于線程數(shù)(通常幾千)和GIL,性能瓶頸明顯。四、編程題18.參考代碼:```pythonimportrequestsfrombs4importBeautifulSoupfromrequests.exceptionsimportRequestExceptionproduct_titles=[]url="/products"headers={"User-Agent":"Mozilla/5.0"}try:response=requests.get(url,headers=headers,timeout=5)response.raise_for_status()檢查HTTP錯(cuò)誤soup=BeautifulSoup(response.text,"html.parser")h2_tags=soup.find_all("h2")product_titles=[tag.get_text(strip=True)fortaginh2_tags]exceptRequestExceptionase:print(f"網(wǎng)絡(luò)異常:{e}")exceptExceptionase:print(f"其他錯(cuò)誤:{e}")```19.參考代碼:```pythonimportpandasaspd讀取數(shù)據(jù)df=pd.read_csv("orders.csv")過濾條件filtered_df=df[(df["狀態(tài)"]=="已支付")&(df["金額"]>100)]分組統(tǒng)計(jì)summary=filtered_df.groupby("用戶ID").agg(總金額=("金額","sum"),訂單數(shù)=("訂單號(hào)","count")).reset_index()保存結(jié)果summary.to_csv("user_summary.csv",index=False)```20.參考代碼:```pythonimporttimefromfunctoolsimportwrapsdeflog_decorator(func):@wraps(func)保留原函數(shù)元信息defwrapper(args,kwargs):now=time.strftime("%Y-%m-%d%H:%M:%S")args_repr=[repr(a)forainargs]kwargs_repr=[f"{k}={repr(v)}"fork,vinkwargs.items()]signature=",".join(args_repr+kwargs_repr)try:result=func(args,kwargs)log_msg=f"[{now}]{func.__name__}({signature})={repr(result)}"exceptExceptionase:log_msg=f"[{now}]{func.__name__}({signature})=Error:{str(e)}"withopen("function_log.txt","a",encoding="utf-8")asf:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論