You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何部分Python内置函数的参数以‘__’为前缀?

Python内置函数参数的__前缀:规范还是功能?

这可不是单纯的命名规范,而是有实际功能用途的,核心目的是避免命名冲突,同时传递“参数名属于内部实现细节”的信号。

具体来说:

  • 防止与用户关键字参数冲突:内置函数的实现团队会用__前缀的参数名(比如repr(__obj)里的__obj),避免用户在调用时用一些通用名称(比如obj)作为关键字参数传递时,和函数内部的变量或逻辑产生混淆。官方文档也不会把这些带__的参数名作为公开的关键字参数,用户应该用位置参数传递,或者遵循文档里给出的公开参数名。
  • 区分内部实现与外部接口:双下划线前缀是Python里标识“内部私有”的一种约定,放在参数名上,就是明确告诉开发者:这个参数名是函数内部的细节,别依赖它,未来版本可能会变动。比如你硬要写repr(__obj=123)虽然语法上能跑,但这是不符合规范的用法。
  • 避免函数内部命名冲突:在CPython的底层实现中,内置函数的代码可能会用到一些通用变量名,用__前缀的参数名能避免和这些内部变量重名,保证函数逻辑正常运行。

举个实际例子,len函数的签名是def len(__obj) -> int,正常调用应该是len(my_list),而不是len(__obj=my_list)——后者虽然能执行,但属于不推荐的“私有接口”调用方式。

内容的提问来源于stack exchange,提问作者d3nigma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:23:12