Python中下划线(_)是否具备特殊内部功能,还是仅为命名惯例?
Python中下划线(_)是否具备特殊内部功能,还是仅为命名惯例?
嘿,这个问题问得相当细致!我来给你把这事儿说透:
首先,在绝大多数Python代码场景(比如脚本、模块开发)里,_就是一个普通的变量名,Python内部完全不会对它做特殊处理——它既不会影响内存管理,也不会改变代码的执行逻辑,纯粹是程序员之间约定俗成的命名惯例。
就拿你举的例子来说:
freq, bin, _ = plt.hist(income, bins = 10, range = (0, 15), rwidth = 0.95)
和你换成普通变量的写法:
freq, bin, temp = plt.hist(income, bins = 10, range = (0, 15), rwidth = 0.95)
这两段代码在Python眼里没有任何区别:第三个返回值都会被赋值给对应的变量,内存占用、执行效率完全一致。大家用_的唯一原因就是可读性——看到这个符号,所有人都能立刻明白:“哦,这个返回值是故意被忽略的,不用管它”。
不过有个例外要注意:在交互式环境里(比如Python自带的命令行shell、IPython),_确实有特殊功能——它会自动保存上一次执行的表达式的结果。举个例子:
>>> 2 + 3 5 >>> _ 5
但这是交互式环境自己实现的特性,不是Python语言本身的语法规则,在普通脚本里这个特性完全不生效。
关于官方文档的依据:
- Python的代码风格指南PEP 8里明确提到,应该用
_作为“丢弃变量”的名称,用来表示不需要的解包值; - Python官方的语言参考手册里也明确说明,
_属于常规标识符,除了交互式环境的特殊用法外,没有任何内置的特殊语义。
所以总结一下:
- 日常写脚本/模块时:
_只是命名惯例,无内部特殊处理,换成普通变量完全没问题,只是可读性会差一点; - 交互式环境中:
_会保存上一次执行结果,这是环境的特殊实现,不是语言本身的功能。
备注:内容来源于stack exchange,提问作者maehwasu
相关产品推荐
相关产品推荐

