随笔分类 -  Python

摘要:2025.11.26 1.python是用C语言写成的,根据名字空间特性,以下代码经过python编译器编译后,一共得到()个PyCodeObject对象 class A: pass def Fun(): pass a = A() Fun() Python编译器在编译代码时,每个独立的作用域(名字空 阅读全文
posted @ 2025-11-26 01:22 sellingpear 阅读(9) 评论(0) 推荐(0)
摘要:2025.11.26 1.当我们使用下面的操作的时候,会产生浅拷贝的效果: 使用切片 [:] 操作 使用工厂函数(如list/dir/set) 使用copy模块中的copy()函数 2.拷贝的特殊情况 对于非容器类型(如数字、字符串、和其他’原子’类型的对象)没有拷贝这一说 如果元祖变量只包含原子类 阅读全文
posted @ 2025-11-26 01:20 sellingpear 阅读(8) 评论(0) 推荐(0)
摘要:2025.11.25 1.__new__确实是一个静态方法(使用@staticmethod装饰器),它在类创建实例时被调用。而__init__是实例方法,它的第一个参数是self,代表实例本身。 2.__new__方法负责创建并返回一个实例对象,如果不返回对象则实例创建不成功。而__init__方法 阅读全文
posted @ 2025-11-25 01:27 sellingpear 阅读(4) 评论(0) 推荐(0)
摘要:2025.11.12 1.Python在导入模块时会按照固定的顺序依次查找所需的模块,正确的查找顺序是:首先查找内建模块,然后是当前路径,接着是PYTHONPATH环境变量中的路径,最后是Python的安装路径。 阅读全文
posted @ 2025-11-12 01:13 sellingpear 阅读(13) 评论(0) 推荐(0)
摘要:2025.11.6 1. def foo(a, b=2, *args, **kwargs): print(a, b, args, kwargs) foo(1, 3, 4, 5, x=6, y=7) 输出为 1 3 (4, 5) {'x': 6, 'y': 7} 以上代码定义了一个函数 foo,它有三 阅读全文
posted @ 2025-11-06 23:55 sellingpear 阅读(22) 评论(0) 推荐(0)
摘要:2025.10.24 1. def adder(x): def wrapper(y): return x + y return wrapper adder5 = adder(5) print(adder5(adder5(6))) 闭包:如果一个函数内部又定义了一个函数,就把外部的函数称为外函数,内部 阅读全文
posted @ 2025-10-24 01:29 sellingpear 阅读(6) 评论(0) 推荐(0)
摘要:2025.10.15 1.猴子补丁的主要问题是破坏代码的可维护性和可预测性,因为它允许在运行时动态修改类或模块的行为,导致代码行为难以预测、调试和维护。 阅读全文
posted @ 2025-10-15 21:16 sellingpear 阅读(9) 评论(0) 推荐(0)
摘要:2025.10.15 1.使用`with`语句打开文件时,文件描述符资源的释放由上下文管理协议确保。当离开`with`代码块时,`__exit__`方法会被自动调用,该方法负责关闭文件并释放文件描述符资源,无需依赖垃圾回收机制或显式调用`close()`方法,也不会等到解释器退出。 2025.11. 阅读全文
posted @ 2025-10-15 21:11 sellingpear 阅读(11) 评论(0) 推荐(0)
摘要:2025.10.14 1.在Python元类编程中,当定义类似 `class MyClass(metaclass=MyMeta):` 的类时,创建过程涉及元类的几个特殊方法。调用顺序为:首先调用 `MyMeta.__prepare__` 方法准备命名空间(一个字典用于存储类属性),然后执行类体语句, 阅读全文
posted @ 2025-10-14 23:15 sellingpear 阅读(8) 评论(0) 推荐(0)
摘要:2025.10.14 1.在Python装饰器模式中,当被装饰的函数被调用时,实际执行的是装饰器返回的包装函数。因为装饰器在函数定义时执行,返回一个包装函数(wrapper),该函数在调用时会执行额外逻辑并可能调用原始函数。 阅读全文
posted @ 2025-10-14 23:14 sellingpear 阅读(5) 评论(0) 推荐(0)
摘要:2025.10.14 1.全局解释器锁(GIL)在Python中主要影响多线程应用程序的性能,具体表现为限制CPU密集型任务的并行执行能力,因为GIL只允许一个线程同时执行Python字节码,导致无法充分利用多核CPU进行真正并行计算。 阅读全文
posted @ 2025-10-14 23:13 sellingpear 阅读(8) 评论(0) 推荐(0)
摘要:2025.10.14 1.在Python中,生成器通过yield关键字实现惰性求值,一次只生成一个元素,而不是一次性加载整个数据集,从而显著减少内存占用,这在处理大型数据集(如日志文件)时尤为重要。 2.生成器支持顺序访问而非随机索引,无法提供更快的索引访问速度 3.生成器本身是单线程的,不直接支持 阅读全文
posted @ 2025-10-14 23:13 sellingpear 阅读(19) 评论(0) 推荐(0)
摘要:2025.10.14 1.字典的键值必须是不可变的,也就是说元祖,形如下面的初始化是可以的 dict1 = {(1, 2): 1} dict1 = {'a': 1} dict1 = {} 阅读全文
posted @ 2025-10-14 00:54 sellingpear 阅读(7) 评论(0) 推荐(0)
摘要:2025.10.14 1. a = [['1','2'] for i in range(2)] b = [['1','2']]*2 a[0][1] = '3' b[0][0] = '4' print(a,b) 执行后输出 [['1', '3'], ['1', '2']] [['4', '2'], [ 阅读全文
posted @ 2025-10-14 00:53 sellingpear 阅读(4) 评论(0) 推荐(0)
摘要:2025.10.11 1.针对CPU密集型任务(如大量数学运算),Python的全局解释器锁(GIL)会限制多线程的并行性,因为同一时刻只有一个线程能执行Python字节码,因此threading模块的多线程concurrent.futures的ThreadPoolExecutor无法利用多核CPU 阅读全文
posted @ 2025-10-11 22:22 sellingpear 阅读(9) 评论(0) 推荐(0)