-
Python和Node.js可在同一台机器上共存,因二者运行时和包管理独立。1.分别从官方渠道安装Python和Node.js,确保PATH正确;2.使用pyenv和nvm管理多版本切换,互不干扰;3.通过venv和node_modules隔离项目依赖,避免冲突;4.在编辑器中正确配置解释器路径,确保开发环境准确识别。合理使用工具即可实现无缝并行开发。
-
类属性属于类、被所有实例共享,实例属性属于具体对象、各实例独立;访问时先查实例__dict__,再查类及父类__dict__;避免用可变对象作类属性。
-
Python中读取列表元素可通过索引、切片、遍历和条件筛选实现。1.索引访问:list[0]获取首元素,list[-1]获取末元素;2.切片操作:list[start:end:step]提取子序列,如list[1:4]返回[2,3,4];3.for循环遍历每个元素,配合enumerate可同时获取索引与值;4.列表推导式或in关键字实现条件筛选与存在性检查。需注意索引越界等细节问题。
-
单下划线_主要用于命名约定,提示内部使用,避免外部直接访问;在循环或解包中作临时变量;交互式环境中保存上一表达式结果;还可作为数字字面量分隔符提升可读性。
-
推荐使用标准项目结构并结合虚拟环境管理Python工程。1.手动创建包含main.py、utils包、config.py和requirements.txt的目录结构;2.用python3-mvenvvenv创建虚拟环境并激活,实现依赖隔离;3.通过pipfreeze>requirements.txt导出依赖,便于环境复现;4.使用PyCharm等IDE可自动创建项目及虚拟环境,适合初学者;5.可选cookiecutter等模板工具生成专业项目结构。核心是保持代码结构清晰、依赖明确,基础方式适用于多数
-
答案是使用importrandom导入模块后调用random.random()、randint(a,b)、uniform(a,b)或choice(list)生成随机数,也可用fromrandomimportrandint,choice直接导入特定函数。
-
set是基于哈希表的无序唯一可变容器,要求元素可哈希;list不可哈希故无法入set;tuple可哈希需其元素皆可哈希;去重可转可哈希表示;&与intersection行为一致但后者更灵活;set无索引,pop随机移除元素;遍历时修改会报错;带_update的方法原地修改。
-
Python变量作用域遵循LEGB规则,即按Local→Enclosing→Global→Built-in顺序查找;Local指函数内赋值变量,Enclosing指外层函数局部变量(需nonlocal才能修改),Global指模块级变量(修改需global声明),Built-in为内置名称(应避免覆盖)。
-
被装饰函数的__name__和__doc__丢失是因为装饰器用新函数替换了原函数,而wrapper默认携带自身元数据;functools.wraps可自动同步__name__、__doc__等属性,避免手动赋值遗漏,类装饰器及嵌套装饰器中同样必须使用。
-
Python字典是基于开放寻址法的哈希表,平均查找O(1)但最坏O(n),依赖键的哈希分布;3.7+插入有序属实现细节而非规范;键须可哈希;defaultdict比setdefault更高效且仅一次哈希。
-
异常捕获应按业务边界划定范围,以完整业务步骤为最小可恢复单元;底层抛具体异常,上层依类型响应;慎用裸except,优先明确异常类型;异常后须做状态清理或补偿。
-
status_code不是判断抓取成功的唯一标准,因为200响应可能返回反爬页、空白HTML、JS占位符或CDN错误模板;需同时满足状态正常、内容可解析、关键字段存在。
-
asyncio.Event是协程安全的布尔标志,仅含“已设置/未设置”状态,需配对使用set()和clear()实现单次通知;误用易致虚假唤醒,复杂场景推荐asyncio.Queue。
-
ORM是对象关系映射,将数据库表映射为Python类,行转为对象,字段转属性。SQLAlchemy通过Engine连接数据库,Session操作数据,Base定义模型。例如创建User类对应users表,用session.add()插入数据,无需手写SQL。支持多数据库,提升开发效率与维护性,常用于Flask、FastAPI等框架。
-
要从零构建可上线、可维护、可扩展的Python项目,需按CleanArchitecture分层(domain/application/infrastructure/presentation),用Poetry管理依赖,TDD驱动三层测试(单元/集成/端到端),并以Docker+gunicorn+nginx容器化部署。