版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年Python整体复习试题及答案一、选择题(每题3分,共24分)1.以下代码执行后输出结果是()```pythona=[1,2,3]b=ab.append(4)print(a)```A.[1,2,3]B.[1,2,3,4]C.报错D.[1,2,4]2.关于Python的作用域,以下说法错误的是()A.函数内部可以直接访问全局变量B.使用nonlocal关键字可以修改外层函数的变量C.类内部定义的变量一定是实例属性D.局部变量在函数执行结束后会被销毁3.执行`importcopy;a=[1,[2,3]];b=copy.copy(a);b[1].append(4);print(a)`,输出结果是()A.[1,[2,3]]B.[1,[2,3,4]]C.[1,[2,4]]D.报错4.提供器函数中使用`yield`和`return`的主要区别是()A.yield返回单个值,return返回多个值B.yield暂停函数并保存状态,return结束函数C.yield只能用于提供器,return只能用于普通函数D.yield可以多次调用,return只能调用一次5.以下异常处理代码中,`finally`块的执行时机是()```pythontry:1/0exceptZeroDivisionError:print("错误")finally:print("结束")```A.仅当try块无异常时执行B.仅当except块执行后执行C.无论是否发生异常都会执行D.仅当try块有异常时执行6.以下f-string格式化正确的是()A.`name="张三";f"年龄{age=20}"`B.`value=3.1415;f"保留两位小数{value:.2f}"`C.`num=100;f"十六进制{num:o}"`D.`data={"a":1};f"字典值{data[a]}"`7.定义类`classA:x=0`,创建`obj1=A();obj2=A();obj1.x=1`后,`A.x`和`obj2.x`的值分别是()A.0和0B.1和0C.0和1D.1和18.以下lambda表达式能正确实现两数相加的是()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.用列表推导式提供1-10中所有偶数的平方列表:____________________。10.提供器表达式计算1-5的平方和(结果为55):`sum(__________)`。11.字典推导式将字典`{"a":1,"b":2}`的键值反转(结果为{1:"a",2:"b"}):____________________。12.正则表达式匹配邮箱(需包含@和.,且.在@之后)的模式字符串:____________________。13.子类中调用父类构造方法时,`super(SubClass,self).__init__()`的等价写法是____________________(Python3+)。三、简答题(每题8分,共32分)14.简述装饰器的作用及实现原理。要求说明装饰器如何在不修改原函数代码的情况下扩展功能,并举例说明典型应用场景。15.解释GIL(全局解释器锁)对Python多线程的影响。说明为什么CPU密集型任务不适合用多线程,而IO密集型任务可以?16.提供器相比列表的主要优点是什么?在处理大文件时,提供器为何更高效?17.对比异步编程(async/await)与多线程的区别。说明在高并发IO场景下,哪种方式更有优势?四、编程题(共74分)18.(15分)使用requests库爬取"/products"页面,要求:-设置请求头`User-Agent`为"Mozilla/5.0"-处理可能的网络异常(如连接超时、404错误)-用BeautifulSoup提取页面中所有`<h2>`标签的文本内容,保存到列表`product_titles`中。19.(20分)现有订单数据集`orders.csv`(字段:订单号、用户ID、金额、时间、状态),用pandas完成以下操作:-读取数据并过滤出状态为"已支付"且金额大于100的记录-按用户ID分组,计算每个用户的总消费金额和订单数量-将结果保存为`user_summary.csv`,包含字段:用户ID、总金额、订单数20.(18分)实现一个装饰器`log_decorator`,要求:-记录函数的调用时间(格式:YYYY-MM-DDHH:MM:SS)-记录函数的参数和返回值-输出到日志文件`function_log.txt`,每行格式:[时间]函数名(参数)=返回值21.(21分)用asyncio实现异步文件读取程序,要求:-异步读取3个文件(`file1.txt`、`file2.txt`、`file3.txt`)-每个文件读取完成后立即打印"已读取:文件名"-所有文件读取完成后打印"全部读取完成"-需处理文件不存在的异常(输出"文件不存在:文件名")答案一、选择题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__()`三、简答题14.装饰器是用于扩展函数功能的可调用对象,通过将原函数包装在另一个函数中实现。原理是利用函数可作为参数传递的特性,返回一个新函数替代原函数。典型场景如日志记录(记录函数调用信息)、性能测试(统计函数执行时间)、权限验证(检查用户是否有权限调用函数)。例如:```pythondeflog_decorator(func):defwrapper(args,kwargs):print(f"调用{func.__name__}")returnfunc(args,kwargs)returnwrapper@log_decoratordefadd(a,b):returna+b```15.GIL是Python解释器为保证线程安全而设置的全局锁,同一时间仅允许一个线程执行Python字节码。对CPU密集型任务,多线程因GIL无法利用多核优势,线程间频繁切换甚至导致效率低于单线程;而IO密集型任务中线程大部分时间等待IO(如网络请求、文件读写),此时GIL会释放,其他线程可执行,因此多线程有效。16.提供器的主要优点是惰性计算(按需提供数据),节省内存。处理大文件时,列表会一次性加载所有数据到内存,可能导致内存溢出;提供器逐行读取,每次仅保留当前行数据,适合处理GB级大文件。例如:```python列表方式(内存占用大)withopen("big.txt")asf:lines=[line.strip()forlineinf]提供器方式(内存友好)defread_big_file(path):withopen(path)asf:whileTrue:line=f.readline()ifnotline:breakyieldline.strip()```17.异步编程通过事件循环调度协程,利用IO等待时间执行其他任务,无需创建线程/进程,资源消耗低;多线程需创建独立线程,存在线程切换开销。高并发IO场景(如百万级HTTP请求)中,异步编程因无线程开销,能支撑更高并发量;多线程受限于线程数(通常几千)和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错误soup=BeautifulSoup(response.text,"html.parser")h2_tags=soup.find_all("h2")product_titles=[tag.get_text(strip=True)fortaginh2_tags]exceptRequestExceptionase:print(f"网络异常:{e}")exceptExceptionase:print(f"其他错误:{e}")```19.参考代码:```pythonimportpandasaspd读取数据df=pd.read_csv("orders.csv")过滤条件filtered_df=df[(df["状态"]=="已支付")&(df["金额"]>100)]分组统计summary=filtered_df.groupby("用户ID").agg(总金额=("金额","sum"),订单数=("订单号","count")).reset_index()保存结果summary.to_csv("user_summary.csv",index=False)```20.参考代码:```pythonimporttimefromfunctoolsimportwrapsdeflog_decorator(func):@wraps(func)保留原函数元信息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等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年消防通道安全隐患排查方案
- 2026年农村旅游项目规划设计方案
- 2026年单手肩上投篮教学策略与方法
- 2026年护理职业规划短期目标
- 2026年四川省自贡市荣县中考英语质检试卷(含详细答案解析)
- 2026年营销策划未来发展规划
- 分家协议书模板宅基地
- 三方协议书盖超市的公章
- 古代诗人名人李煜人物介绍课件
- (新)高中高考满分作文范文-理性对待重复与变化2篇
- 2026年重庆市北碚区社区工作者招聘考试试卷(含答案解析)
- 2026中国社会科学院生态文明研究所非事业编制管理岗位招聘2人笔试备考试题及答案解析
- 2026年2026年新版七年级下册道德与法治期末复习核心考点提纲详细版新版
- 危险废弃物焚烧项目经济效益和社会效益分析报告
- 2026上半年生态环境部卫星环境应用中心招聘15人笔试参考题库及答案解析
- 律师的招聘简章文件
- 口语交际:倾听
- 导线三角高程计算表(表内自带计算公式)
- 创新理论我来讲演讲稿2000字
- 2023广东惠州市惠城区桥西街道办事处招聘治安队员、党建联络员、社区“两委”班子储备人选考试通告考试备考试题及答案解析
- 钢铰线应力松弛率试验计算表
评论
0/150
提交评论