鱼C论坛

 找回密码
 立即注册
查看: 1670|回复: 8

[已解决]关于python中的下划线

[复制链接]
发表于 2020-3-16 22:02:02 | 显示全部楼层 |阅读模式
10鱼币
今天想看一下安装的python内置都有什么模块
于是使用help('modules')
然后发现很多带_的模块名
比如_abc、_json、_os等等等等
想知道带_的和不带的有什么区别和联系


另外大家都知道python中类的变量和函数命名时使用不同的下划线有不同的含义
欢迎大家讨论、梳理

最佳答案

查看完整内容

https://zhuanlan.zhihu.com/p/36173202
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-16 22:02:03 | 显示全部楼层    本楼为最佳答案   
https://zhuanlan.zhihu.com/p/36173202
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-16 22:21:04 | 显示全部楼层
带下划线的通常都是有重名的模块,比如那个_os,Python里就有一个os,_json也是
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-16 22:30:51 | 显示全部楼层
qiuyouzhi 发表于 2020-3-16 22:21
带下划线的通常都是有重名的模块,比如那个_os,Python里就有一个os,_json也是

两者功能上有什么联系吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-16 23:15:19 | 显示全部楼层
顶一下,大佬们来答一下,摸摸哒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 08:13:30 | 显示全部楼层
_os?是_io吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 08:17:36 | 显示全部楼层
https://www.cnblogs.com/shuai1993/p/10062222.html

带下划线的模块名是 Python 私有的,不用理会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 08:39:16 | 显示全部楼层
1.单前导下划线:_var
下划线前缀的含义是告知其他程序员:以单个下划线开头的变量或方法仅供内部使用。 该约定在PEP 8中有定义。但是,前导下划线的确会影响从模块中导入名称的方式。如果使用通配符从模块中导入所有名称,则Python不会导入带有前导下划线的名称。
2.单末尾下划线:var_
有时候,一个变量的最合适的名称已经被一个关键字所占用。总之,单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突。 PEP 8解释了这个约定。
3.双前导下划线:__var
双下划线前缀会导致Python解释器重写属性名称,以避免子类中的命名冲突。
这也叫做名称修饰(name mangling) - 解释器更改变量的名称,以便在类被扩展的时候不容易产生冲突。
一般会装饰成私有的。
4.双前导和末尾下划线:__var__
由双下划线前缀和后缀包围的变量不会被Python解释器修改。
Python保留了有双前导和双末尾下划线的名称,用于特殊用途。 这样的例子有,__init__对象构造函数,或__call__ --- 它使得一个对象可以被调用。
这些dunder方法通常被称为神奇方法。
5.单下划线:_
按照习惯,有时候单个独立下划线是用作一个名字,来表示某个变量是临时的或无关紧要的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 09:06:19 | 显示全部楼层
V流年V 发表于 2020-3-16 22:30
两者功能上有什么联系吗

额,昨天时间不够没回答完整
具体那个模块的看6楼,我说下变量
下划线就是被当作假想的空格(each_line,变量里不能加空格)
没什么区别,而_each这样的通常是私有变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 22:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表