
Python基础和面试
文章平均质量分 80
Python基础知识点和常见面试题的详细分析总结,持续更新。
ylfhpy
学海无涯,虚怀若谷.
展开
-
基于 Selenium 的软件测试方法研究
从 Selenium 的基本概念和工作原理的详细阐述,到环境搭建的具体步骤,再到元素定位、页面操作、测试用例编写等核心内容的讲解,以及最后一个完整的电商网站商品搜索测试案例的展示,为软件测试工程师提供了一套完整的自动化测试解决方案。同时,随着技术的不断发展,Selenium 也在不断更新和完善,我们需要关注其最新动态,及时学习和应用新的功能,以适应不断变化的测试需求。在实际的软件测试工作中,我们可以根据具体的测试需求,灵活运用 Selenium 的各种功能,对 Web 应用程序进行全面、细致的测试。原创 2025-03-12 09:27:55 · 746 阅读 · 0 评论 -
Python常见面试题的详解26
可以维护一个大小为 k的最小堆(这里 k可以根据需要设置,若只找一个元素,k=1),遍历所有元素的统计结果,将元素及其出现次数插入堆中,当堆的大小超过k时,删除堆顶元素(出现次数最少的元素),最终堆中剩下的元素即为出现次数最多的元素。核心思路是先把海量数据分割成多个小文件,确保每个小文件能被加载到内存里,接着对每个小文件进行处理,使用哈希表统计元素出现次数,之后合并所有小文件的统计结果,再次利用哈希表统计每个元素的总出现次数,最终找出出现次数最多的元素。子类可以重写父类的方法,也可以添加新的方法和属性。原创 2025-02-28 07:31:07 · 2766 阅读 · 0 评论 -
Python常见面试题的详解25
快速排序是一种高效的分治排序算法,其基本思想是通过选择一个基准元素,将数组分为两部分,使得左边部分的所有元素都小于等于基准元素,右边部分的所有元素都大于等于基准元素,然后分别对左右两部分递归地进行排序,最终得到一个有序的数组。具体步骤为:从数组的第一个元素开始,依次比较相邻的两个元素,若前一个元素大于后一个元素,则交换它们的位置;:在传统冒泡排序的基础上进行改进,不仅从前往后比较和交换元素,还从后往前进行相同的操作,这样可以更快地将较大和较小的元素移到合适的位置,进一步提高排序效率。原创 2025-02-27 10:20:55 · 610 阅读 · 0 评论 -
Python常见面试题的详解24
软件 Bug 记录涵盖基本信息(编号、标题、发现时间、发现人)、问题描述(重现步骤、实际结果、预期结果)、环境信息(操作系统、浏览器等)、严重程度和优先级,还可附带相关附件。常见软件测试种类包括功能测试、性能测试、兼容性测试、安全测试、易用性测试、可靠性测试、单元测试、集成测试、系统测试和验收测试。在测试总结阶段,可以生成更详细的报告,如 HTML 格式的报告,包含每个测试用例的详细信息和统计图表。为 Bug 记录添加更多的状态信息,如已分配、已修复、已验证等,方便跟踪 Bug 的处理流程。原创 2025-02-27 08:49:58 · 567 阅读 · 0 评论 -
Python常见面试题的详解23
常见淘汰策略:volatile-lru(从已设置过期时间的键中选最近最少使用的键删除)、volatile-ttl(从已设置过期时间的键中选剩余时间最短的键删除)、volatile-random(从已设置过期时间的键中随机选键删除)、allkeys-lru(从所有键中选最近最少使用的键删除)、allkeys-random(从所有键中随机选键删除)、noeviction(不删除,内存不足时新写入报错)。同时,在一些新兴的数据库系统中,如无锁数据库,正在探索完全摒弃锁机制的方法,以提高系统的并发性能和可扩展性。原创 2025-02-26 09:52:55 · 573 阅读 · 0 评论 -
Python常见面试题的详解22
要点提升爬取效率,多节点并行加快数据获取速度。突破单个 IP 或服务器访问限制,降低封禁风险。应对大规模数据爬取,分解任务到多个节点处理。增强系统稳定性,部分节点故障不影响整体任务。分布式爬虫的核心优势在于显著提升数据爬取的效率。通过将任务分散到多个节点同时执行,能够在短时间内获取大量数据,极大缩短了数据采集的时间成本。同时,多个节点使用不同 IP 访问,可有效规避目标网站对单个 IP 或服务器的访问限制,减少被封禁的可能性,保障爬取工作的稳定性。在处理海量网页数据时,分布式爬虫可将任务合理拆分,让每个原创 2025-02-26 08:44:23 · 932 阅读 · 0 评论 -
Python常见面试题的详解21
Scrapy 是基于 Python 的高效,可扩展爬虫框架,它采用模块化设计,将爬虫开发中的网络请求,调度,并发等底层操作封装,开发者只需关注网页解析和数据提取逻辑。类实现请求去重,通过计算请求的指纹(对请求的 URL、方法、请求体等信息进行哈希计算),并使用集合存储已处理的指纹,比较新请求的指纹是否存在于集合中来判断是否为重复请求。上述代码展示了一个简单的 Scrapy 爬虫,开发者只需定义爬虫类,指定起始 URL 和解析方法,Scrapy 框架会自动处理请求的发送、响应的接收和调度等操作。原创 2025-02-24 07:48:23 · 1216 阅读 · 0 评论 -
Python常见面试题的详解18
是一种服务器端的会话机制,用于跟踪用户的会话状态。例如,一个订单表,主键是(订单号,商品编号),“商品价格” 只依赖于 “商品编号”,这就存在部分依赖,应将 “商品价格” 移到商品表中。它内置了丰富的功能,如 ORM(对象关系映射),管理界面,表单处理,认证系统等,适合快速开发大型,复杂的 Web 应用。:是一个高性能的 Python Web 框架和异步网络库,它采用异步 I/O 和非阻塞 I/O 技术,能够处理大量并发连接,适合开发实时性要求高,高并发的 Web 应用,如在线游戏,实时聊天等。原创 2025-02-23 12:59:59 · 613 阅读 · 0 评论 -
Python常见面试题的详解16
浏览器先检查本地 DNS 缓存,若没有则向本地 DNS 服务器查询,本地 DNS 服务器若没有则逐级向根 DNS 服务器、顶级域名 DNS 服务器、权威 DNS 服务器查询,最终获取目标网站的 IP 地址。对于基于 TCP 协议的连接,由于其面向连接的特性,需要采取特定的步骤来确保连接被正确关闭;在实际网络环境中,可能会出现丢包、超时等情况,需要通过重传机制来确保连接的正常建立和关闭。另外,对于 TCP 连接,不同的操作系统对 MSL 的定义可能不同,一般来说,MSL 的值在 30 秒到 2 分钟之间。原创 2025-02-21 08:01:47 · 3359 阅读 · 0 评论 -
Python常见面试题的详解15
当多个线程访问某个类时,无论运行时环境采用何种调度方式,也不管这些线程如何交替执行,并且在主调代码中无需额外的同步或协同操作,这个类都能表现出正确的行为。在下面代码中,通过对比多线程和多进程执行 CPU 密集型任务的时间,可以看出多进程在 CPU 密集型任务中能更好地利用多核 CPU 实现并行,而多线程由于 GIL 的限制,主要是并发执行。:对于需要大量 IO 操作的任务,如网络请求、文件读写等,使用多线程可以在 IO 操作时释放 GIL,让其他线程继续执行,从而提高程序的并发性能。原创 2025-02-20 06:23:39 · 632 阅读 · 0 评论 -
Python常见面试题的详解14
例如,在一个网络爬虫项目中,可以使用多进程充分利用多核 CPU,每个进程中使用多线程或协程处理多个网络请求,提高爬虫的效率。在使用线程同步机制时,要根据具体的场景选择合适的锁,避免死锁和性能问题。不同的 IPC 机制适用于不同的场景,如管道适用于简单的单向或双向通信,队列适用于多个进程间的数据共享和同步。锁是一种用于控制多个线程或进程对共享资源访问的机制,确保在同一时刻只有一个线程或进程能够访问共享资源,避免数据竞争和不一致。在实际应用中,为了避免死锁,应尽量减少锁的持有时间,避免嵌套锁的使用。原创 2025-02-19 11:15:10 · 973 阅读 · 0 评论 -
Python常见面试题的详解12
设计模式是软件开发中针对反复出现的问题总结出的通用解决方案,有助于提高软件的可维护性、可扩展性和可复用性。例如,在一个大型的游戏开发中,可以结合工厂模式创建游戏角色,使用单例模式管理游戏的全局状态。函数是一种匿名函数,语法简洁,通常用于编写简单的、一次性使用的函数。函数装饰器可以在不修改原函数代码的情况下,为函数添加额外的功能,实现代码复用和功能扩展,提高代码的可读性和可维护性。这三个函数用于对对象的属性进行检查、获取和设置操作,是 Python 中进行对象属性动态操作的重要工具。原创 2025-02-18 10:00:12 · 369 阅读 · 0 评论 -
Python常见面试题的详解11
在 Python 中,参数传递方式既不是纯粹的值传递,也不是纯粹的引用传递,而是 “对象引用传递”。本质上传递的是对象引用的副本,对于不可变对象,函数内修改参数不会影响原对象;带参数的装饰器是装饰器的扩展,允许装饰器接收额外参数。通常通过三层嵌套函数实现,外层函数接收装饰器参数,中层函数接收被装饰函数,内层函数实现具体功能。默认参数必须放在非默认参数之后,且默认参数的值在函数定义时就被确定,而不是在调用时。回调函数是作为参数传递给另一个函数的函数,在特定事件或操作完成时被调用。原创 2025-02-18 08:41:49 · 1226 阅读 · 0 评论 -
Python常见面试题的详解9
装饰器,无默认第一个参数,可通过类名或实例对象调用,用于组织代码,与类和实例无直接关系。接口类通常只含抽象方法,无具体实现和属性。遍历字符串,若字符已在字典中则计数加 1,否则将其添加到字典并初始化为 1。在多继承中,能确保按正确的方法解析顺序(MRO)调用父类方法。,代表实例对象,通过实例对象调用,用于操作实例的属性和方法。,代表类本身,可通过类名或实例对象调用,常用于创建工厂方法。代码可移植性受影响;通过定义特殊方法,使类支持加法、减法、乘法等操作符。可将属性名和属性值以字典形式存储,方便后续处理。原创 2025-02-17 11:34:20 · 343 阅读 · 0 评论 -
Python常见面试题的详解8
Python 中有四种作用域:局部作用域(Local,L)、闭包函数外的函数中作用域(Enclosing,E)、全局作用域(Global,G)、内置作用域(Built - in,B)。使用双指针法,分别遍历两个列表,比较指针所指元素的大小,将较小的元素添加到新列表中,直到其中一个列表遍历完,然后将另一个列表剩余的元素依次添加到新列表中。可以定义一个函数应用于数据排序和整理的场景中,对于不同的数据类型(如整数列表、字符串列表等),可以进行相应的修改。然后累加每个月的天数,直到输入的月份,再加上输入的日期。原创 2025-02-16 17:00:13 · 510 阅读 · 0 评论 -
Python常见面试题的详解6
利用集合的交集和对称差集操作,找出两列表相同和不同元素,也可以处理多个列表,找出所有列表的公共元素和不同元素。:将特定格式字符串按规则分割处理,转换为字典,如果字符串格式比较复杂,如包含引号,可以增加处理逻辑。:使用列表生成式创建公差为 7 的等差数列,也可以将其封装成函数,方便生成不同首项和公差的等差数列。:字典推导式是简洁创建字典的方式,类似列表推导式,可以结合条件判断,只将满足条件的元素纳入字典。:使用集合去除列表重复元素,再转换回列表,如果需要保留列表元素的原有顺序,可以使用。原创 2025-02-15 17:19:22 · 378 阅读 · 0 评论 -
Python常见面试题的详解5
字典推导式是一种简洁的创建字典的方式,它可以根据已有的数据结构快速生成字典。将列表转换为字典,列表的元素作为键,元素的索引的平方作为值。:当处理大文件时,为了避免一次性将整个文件加载到内存中导致内存不足的问题,可以采用逐行读取的方式,利用生成器来实现。模块中用于字符串替换的强大工具,它可以根据指定的正则表达式模式,将字符串中匹配的部分替换为新的字符串。:在整个字符串中搜索第一个符合正则表达式模式的位置,不要求从字符串的开头进行匹配。如果字符串的开头部分不符合正则表达式的模式,原创 2025-02-15 11:41:08 · 600 阅读 · 0 评论 -
Python常见面试题的详解4
有两个序列 a,b, 大小都为 n,序列元素的值任意整形数, 无序;要求: 通过交换 a,b 中的元素, 使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小。模块由于其特性天然支持单例,首次导入生成对象,后续导入直接复用。在 Python 3.7 及以上版本中,有序字典能保持插入顺序,可用于实现有序去重。库来实现邮件发送功能,需要构建邮件内容、设置邮件主题、发件人和收件人等信息,并进行登录和发送操作。:根据动态规划得到的结果,确定哪些元素需要从一个序列交换到另一个序列,从而实现和差最小。原创 2025-02-14 10:23:23 · 2171 阅读 · 0 评论 -
Python基础知识11
在处理文本数据时,我们可以使用这些字符串替换方法来去除文本中的敏感词汇,或者修正其中的错误字符,从而提高数据的质量。在开发多语言应用时,我们可以根据不同的语言设置,将文本中的词汇替换为对应语言的表达,以满足不同用户的需求。在日常工作中,若需要实现一个用于替换字符串中一个或多个子串的函数,我们可以对 Python 内置的。该版本允许我们指定替换子串的次数,若不指定次数,默认会替换所有匹配的子串。此版本的函数能够将字符串中所有匹配的子串进行替换。我们可以扩展函数,使其支持忽略大小写的子串替换。原创 2025-02-13 14:17:15 · 420 阅读 · 0 评论 -
Python常见面试题的详解3
类是一种抽象的概念,它定义了一组具有相同属性和方法的对象的蓝图或模板。而对象是类的具体实例,是根据类创建出来的实体,每个对象都有自己独立的状态(属性值)。Python 中若默认参数为可变对象(如列表),多次调用会导致共享同一对象。5. 生成含有 n 个元素值为 1~n 的数组,元素顺序随机,但值不重复。:当创建一个对象时,Python 会为对象分配内存空间,然后调用类的。1. 类和对象的区别、对象访问类的方法、创建对象时的操作。6. 在不用其他变量的情况下,交换 a、b 变量的值。原创 2025-02-12 09:51:50 · 153 阅读 · 0 评论 -
Python常见面试题的详解2
此外,__slots__在继承时也有一些特殊的规则,子类可以继承父类的__slots__,也可以定义自己的__slots__,但需要注意不同的组合方式可能会带来不同的效果。除了__str__和__repr__,Python 还有许多其他常用的魔术方法,如__add__用于实现对象的加法操作,__getitem__用于实现对象的索引和切片操作等。例如,在数据库操作中,可以自定义数据库连接异常类,在上下文管理器中管理数据库连接的打开和关闭,并在出现异常时进行适当的处理,如回滚事务、记录日志等。原创 2025-02-11 08:21:24 · 888 阅读 · 0 评论 -
Python常见面试题的详解1
标记 - 清除算法会在一定阶段扫描所有对象,标记所有可达对象(从根对象开始,通过引用链可以访问到的对象),然后清除所有未被标记的对象(即不可达对象)。弱引用不会增加对象的引用计数,当对象的其他引用都被释放后,即使存在弱引用,对象也会被垃圾回收。:在 CPU 密集型任务中,线程大部分时间都在执行计算操作,由于 GIL 的存在,多线程无法真正利用多核 CPU 的优势,只能在一个 CPU 核心上轮流执行,从而导致效率不高。方法只复制顶层对象,对于嵌套的对象,它只是复制对象的引用,而不是对象本身。原创 2025-02-10 10:05:17 · 891 阅读 · 0 评论 -
Python基础知识10
在 Python 编程领域,内存模型紧密围绕对象展开,一切数据,无论是数字、字符串,还是列表等复杂结构,均以对象的形式存在于内存之中。循环引用是指两个或多个对象相互引用,形成一个封闭的引用环,使得这些对象的引用计数永远不会归零,从而无法通过引用计数机制被回收。因此,当多个变量引用同一个可变对象时,对其中任何一个变量所指向对象的修改,都会影响到其他所有引用该对象的变量。当对象的引用计数归零时,意味着不再有任何变量引用该对象,此时对象所占用的内存将被回收,以释放资源。原创 2025-02-09 10:15:21 · 1967 阅读 · 0 评论 -
Python基础知识9
掌握列表推导式可以显著提升Python代码的简洁性和执行效率,但需注意在可读性和简洁性之间保持平衡。对于复杂逻辑,仍建议使用常规循环结构以保证代码可维护性。:超大数据集应优先考虑生成器表达式而非列表推导式。:推导式中不应执行文件操作、打印等副作用操作。:当使用生成器表达式时需注意迭代器的耗尽问题。:符合Python的"扁平优于嵌套"哲学。:推导式中的临时变量会覆盖外部同名变量。:尽可能在迭代早期进行条件判断。:用单行代码替代多行循环。:执行速度通常快于普通。示例:创建唯一字符集合。需要维护状态的迭代过程。原创 2025-02-08 09:40:31 · 1010 阅读 · 0 评论 -
Python基础知识8
在 Flask 或 Django 等 Web 框架中,虽然主要通过 URL 参数和表单数据接收用户输入,但也可以类比命令行参数传递的概念,理解如何在不同的请求处理函数中传递和处理参数。的项目,如某个开源的文本处理工具,分析其如何通过简洁的文档字符串定义复杂的命令行接口,以及这种方式对代码维护和用户使用的优势。:适用于简单场景,直接获取命令行参数列表,列表第 0 个元素是脚本名称,后续为用户输入参数(字符串类型)。:功能强大的第三方命令行库,它提供了丰富的功能和便捷的语法,适用于构建复杂的命令行工具。原创 2025-02-07 10:01:38 · 778 阅读 · 0 评论 -
Python基础知识7
异常处理:通过 `try-except` 捕获错误,`else` 处理无异常逻辑,`finally` 执行清理操作。在模块中,`if __name__ == "__main__":` 表示当前文件直接运行时执行,被导入时不执行。模块:通过 `.py` 文件组织代码,使用 `import` 导入,包用于管理多个模块。标准库:内置模块如 `math`、`os`、`datetime` 等提供丰富功能。ValueError:值无效(如 `int("abc")`)。1.3 `else` 和 `finally`原创 2025-02-06 10:23:56 · 407 阅读 · 0 评论 -
Python基础知识6
Python 的面向对象编程(Object-Oriented Programming, OOP)是一种以对象为中心的编程范式。它将数据(属性)和操作数据的方法(函数)封装在对象中,通过类和对象实现代码复用、模块化和抽象化。通过合理运用 OOP 特性,可以构建出高内聚、低耦合的模块化系统,特别适合 GUI 开发、游戏引擎、业务系统等复杂场景。类的实例化结果,具有类中定义的属性和方法。子类继承父类的属性和方法,实现代码复用。定义对象的模板,包含属性和方法的声明。不同类的对象对同一方法名有不同的实现。原创 2025-02-05 10:14:33 · 520 阅读 · 0 评论 -
Python基础知识5
这种方式需要手动关闭文件,容易遗漏导致资源未释放。:细化捕获 FileNotFoundError, PermissionError 等特定异常。建议结合具体业务场景选择合适的文件处理策略,并在关键操作处添加详细日志记录和性能监控。在 Python 中,文件操作的生命周期管理至关重要。5.2 异步 IO 处理(Python 3.7+):显式指定 encoding='utf-8':始终使用上下文管理器 (with 语句):优先使用 pathlib 替代字符串拼接。:敏感文件处理需考虑安全删除和权限控制。原创 2025-02-04 16:21:06 · 769 阅读 · 0 评论 -
Python基础知识4
函数定义:使用def关键字,包含函数名、参数列表、函数体和可选的return语句。函数参数位置参数:按顺序传递值。关键字参数:明确指定参数名和值。默认参数:定义时指定默认值,调用时可省略。可变参数*args接收任意数量位置参数,**kwargs接收任意数量关键字参数。函数返回值:通过return语句返回一个或多个值,多个值以元组形式返回。函数调用:使用函数名加括号并传递参数来调用函数。匿名函数:使用lambda关键字创建简单的一次性函数。递归函数:函数内部调用自身,需设置终止条件。3. 补充资料。原创 2025-02-03 15:12:42 · 989 阅读 · 0 评论 -
Python基础知识3
左移运算符:将运算数的每一个二进制位全部向左移动若干位,移动的位数由 << 右边的数字指定,高位丢弃,低位补 0。:按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)、右移(>>),通过二进制形式计算。:for 循环与 while 循环类似,都可实现数据的循环操作,尤其适用于遍历序列(如字符串、列表等)。按位与运算符:当参与运算的两个值的对应位均为 1 时,该位结果为 1,否则为 0。按位或运算符:只要对应的两个二进制位中有一个为 1,结果即为 1,否则为 0。原创 2025-02-02 14:01:26 · 846 阅读 · 0 评论 -
Python基础知识2
用于在满足特定条件时执行相应操作,生活和开发中都有广泛应用,如安全检查、用户身份验证等。单分支条件语句条件为假时无输出,可使用。计算机以补码形式存储数据,正数的原码、反码、补码相同,负数的反码是原码逐位取反(符号位不变),补码是反码加 1。可通过除法、乘法、位运算等方式进行转换,也可使用 Python 内置函数。:由 0 - 9 组成,整数默认是十进制,逢十进一。计算机以二进制形式存储数据,内存存储数据的单位有。:由 0 - 9、A - F 组成,以。在条件语句里再嵌套条件语句。:由 0、1 组成,以。原创 2025-02-01 12:18:52 · 581 阅读 · 0 评论 -
Python基础知识1
在 Python 中,只要定义了一个变量,而且它有数据,此时它的数据类型就已经确定,不需要开发者主动说明数据类型,系统会自动辨别。关键字是 Python 中已经使用过的标识符,不允许开发者自定义和关键字名字相同的标识符。需要注意的是,Python 没有任何机制保证常量不会被修改,没有提供定义常量的保留字,实际常量的值是可以修改的,常量实质还是变量。函数圆括号里面放的是提示信息,获取用户键盘返还的信息,返回的结果赋给一个变量,且。,其功能是计算等号右侧的表达式的值,然后赋值给等号左边的变量。原创 2025-01-31 20:40:14 · 550 阅读 · 1 评论