- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Python开发面试题及答案
一、基础语法与数据类型
问题:列表(list)和元组(tuple)的核心区别是什么?实际开发中怎么选择?
答案:
可变性:list可变(支持append/pop等修改操作),tuple不可变(创建后无法修改元素);
性能:tuple因不可变,内存占用更小,访问速度比list快;
应用场景:存储固定配置(如数据库地址、接口参数)用tuple,避免误修改;存储动态数据(如用户列表、日志记录)用list。
问题:Python中is和==的区别?举个实际例子说明。
答案:
==判断值是否相等,is判断内存地址(是否为同一对象);
例子:a=[1,2],b=[1,2],a==b结果为True(值相同),aisb结果为False(不同内存地址);
注意:小整数(-5~256)和短字符串会被Python缓存,如c=10,d=10,cisd为True,但超过范围的整数无此特性。
二、进阶特性
问题:装饰器(decorator)的作用是什么?写一个实际开发中常用的日志装饰器。
答案:
作用:在不修改原函数代码的前提下,为函数添加额外功能(如日志、权限校验、缓存),符合开闭原则;
日志装饰器示例:
importlogging
fromfunctoolsimportwraps
logging.basicConfig(level=logging.INFO)
deflog_decorator(func):
@wraps(func)#保留原函数的__name__和__doc__,避免调试混乱
defwrapper(*args,**kwargs):
logging.info(f函数{func.__name__}调用,参数:{args},{kwargs})
result=func(*args,**kwargs)
logging.info(f函数{func.__name__}返回:{result})
returnresult
returnwrapper
#使用:给需要打日志的函数加装饰器
@log_decorator
defadd(a,b):
returna+b
问题:生成器(generator)相比普通列表有什么优势?什么场景下用生成器?
答案:
优势:生成器通过yield逐次返回数据,不一次性加载所有数据到内存,大幅节省内存占用;
适用场景:处理大文件(如10G日志文件按行读取)、生成海量数据(如百万级ID列表),避免内存溢出;
例子:读取大文件的生成器函数:
defread_large_file(file_path,chunk_size=1024):
withopen(file_path,r,encoding=utf-8)asf:
whilechunk:=f.read(chunk_size):#3.8+海象运算符
yieldchunk
三、性能与异常处理
问题:Python处理大数据时,有哪些常见的性能优化手段?
答案:
数据结构优化:用collections.defaultdict避免键不存在的判断,用set做成员检测(O(1)复杂度,比list的O(n)快);
循环优化:用列表推导式([x*2forxinlst])代替for循环+append,列表推导式是C级实现,比Python级循环快3~5倍;
缓存优化:用functools.lru_cache缓存重复计算的函数结果(如斐波那契数列、频繁查询的配置);
底层优化:CPU密集型任务用multiprocessing(规避GIL锁),IO密集型任务用asyncio(协程)或threading。
问题:实际开发中,如何合理处理异常?举个文件读取的例子。
答案:
原则:不捕获所有异常(避免bareexcept),只捕获明确需要处理的异常;异常块内做具体处理(如日志、重试),不吞掉异常;
文件读取示例:
defread_file(file_path):
try:
withopen(file_path,r,encoding=utf-8)asf:
returnf.read()
exceptFileNotFoundError:
logging.error(f文件不存在:{file_path})
returnNone#或抛自定义异常让上层处理
excep
文档评论(0)