-
直接用pandas.read_csv()读千万行卡死,本质是默认C解析器逐行做类型推断和Python对象构造;改用PyArrow后端(engine="pyarrow")并预设dtype、usecols等参数,可将1200万行读取从90秒降至15秒内、内存从8GB压至≤3.5GB。
-
Python条件表达式写法为“值1if条件else值2”,用于一行内简单条件选择,不可省略else,不能执行语句,仅返回值,嵌套不宜超过一层。
-
defaultdict初始化必须传可调用对象,如int、list、lambda:"N/A";不可传0或[];int不带括号;计数用defaultdict(int),归集用defaultdict(list);访问缺失key会自动插入,影响内存和键判断。
-
CIMultiDict比MultiDict多占15%–30%内存,主因大小写缓存和哈希表开销;HTTP场景用CIMultiDict,非HTTP用MultiDict;len()返回总键值对数,去重需len(multidict.keys())。
-
应使用bbox_to_anchor与ncol联合控制图例位置,配合tight_layout的rect参数预留空间或用subplots_adjust直接调整边距,再通过columnspacing、handlelength和fontsize微调多行图例对齐与显示效果。
-
pip-autoremove是基于pip依赖快照逆向推导冗余包的第三方工具,仅删除未被任何保留包声明为依赖且非显式安装的包,不分析代码、不读requirements.txt、不处理conda/pep517/手动安装包。
-
Python属性访问优先调用__getattribute__(每次访问都触发,负责完整查找流程),仅当其抛出AttributeError时才调用__getattr__(仅兜底处理不存在的属性)。
-
dataclass能省略__init__和__repr__是因为@dataclass在类构造期自动生成这些方法,而非继承或运行时patch;若手动定义了__init__,则装饰器跳过生成。
-
根本原因是Python环境与pip不匹配,需用python-mpipinstallflask并确认版本一致;FlaskCLI要求app变量在模块顶层且文件名正确;模板和静态文件须按约定目录结构放置。
-
copy.deepcopy有时改了原对象,是因为其对不可拷贝成分(如文件句柄、线程锁)、未正确实现__reduce__或__getstate__的自定义类、或某些C扩展类型(如旧版NumPy数组)可能静默降级为浅拷贝或抛出TypeError,导致隔离失效。
-
MonkeyPatch能改类但不改源码,因Python类对象可变,方法是绑定到类命名空间的函数对象,直接赋值修改类__dict__即可生效,仅对新式类可靠;动态加实例方法须用types.MethodType绑定,否则self不自动传入。
-
Python库默认存放在site-packages目录,路径因环境和系统而异;应使用pip安装而非手动复制文件,开发时推荐pipinstall-e.。
-
dateparser.parse()更适合爬虫时间解析,因其无需预设格式,支持多语言、相对时间推算、时区识别和模糊表达理解,而strptime()需硬编码多种格式且无法处理“昨天”“2小时前”等动态表述。
-
len在Python中是用来计算对象长度的函数。1)对于字符串,len返回字符数量。2)对于列表、元组等,len返回元素数量。3)对于字典,len返回键值对数量。4)自定义类可通过__len__方法支持len函数。
-
面向对象三大特性是继承、封装、多态:继承通过classDog(Animal)复用代码并扩展行为;封装用_和__约定保护成员,辅以getter/setter控制访问;多态通过同名方法不同实现实现解耦,无需类型判断。