python变量名可以用下划线开头吗_python以下划线开头的变量和函数的作用
在python中,我们经常能看到很多变量名以_下划线开头,而且下划线的数量还不一样,那么这些变量的作用到底是什么?
变量名分类:
# 以数字、字母开头: 正常的公有变量名
a = 1
def aa():
pass
# 以单下划线开头: 半私有的变量名
_b = 2
def _bb():
pass
# 以双下划线开头: 私有变量名
__c = 3
def __cc():
pass
# 以双下划线开头,双下划线结尾: 内置属性名或者魔法方法名
__name__, __dir__
公有变量名:
以此类名称命名的对象,为公有对象,任何人都可以使用
半私有变量名:
以此类名称命名的对象,需要分为两种情况
1.类外
类外的半私有对象、私有对象,功能一致,均是在本模块中可以正常使用,但是不能被直接导入并调用
如果一定要在模块外使用,那么需要导入本模块,然后使用(模块名.变量名)进行调用
2.类中
类中的半私有对象,仅仅是概念上的私有,默认不要再类外进行调用
实际在类外,均可以使用(实例名.变量名/类名.变量名)进行调用
私有变量名:
以此类名称命名的对象,也需要分为两种情况
1.类外
此种情况下的对象,和半私有对象一样,可参照上面
2.类中
类中的私有对象,在类外均不能直接调用,可以理解为真私有
但是,python中没有完全私有的对象,此种对象也是可以在类外进行调用的,这里涉及到一个概念:矫直
class A:
def get_1(self):
return 1
def _get_2(self):
return 2
def __get_3(self):
return 3
print(dir(A))
结果为:
['_A__get_3', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__',
'__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'__weakref__', '_get_2', 'get_1']
从打印结果中我们看到,类A并不存在__get_3这么一个属性,但是存在一个_A__get_3的属性,这就是矫直
python对于出现在类中的私有属性或者私有方法,进行矫直,矫直方法就是在私有属性名、私有方法名前添加(_类名)
那么,我们想要调用类的私有属性和方法的时候,就可以直接用矫直后的属性名进行调用
魔法方法:
这是python自己实现的属性和方法,一般不允许自定义类似此种命名方式的属性或者方法
关于这些方法和属性的作用,大家可以自己试一试
python变量名可以用下划线开头吗_python以下划线开头的变量和函数的作用相关推荐
- python下划线怎么输入_python中下划线的用法
Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划 ...
- python程序中长下划线怎么打_python中下划线怎么输入
python中下划线使用键盘上的Shift+减号键即可打出,减号键位于0和加号键之间. 在Python中下划线还具有 private 和 protected 类似的访问权限作用,下面我们具体分析.Py ...
- python两个下划线怎么打_python中下划线怎么打
Python中的下划线具有特殊的意义,python用下划线作为变量前缀和后缀指定特殊变量. python中下划线使用键盘上的Shift 减号键即可打出,减号键位于0和加号键之间.(推荐学习:Pytho ...
- python下划线怎么输入_Python中下划线的使用方法有哪些
Python中下划线的使用方法有哪些 主要介绍了Python中下划线的使用方法,是为python编程学习中的基本知识,需要的朋友可以参考下,就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注 ...
- 怎样跳出Python条件语句 继续判断下一个条件语句_Python条件判断、循环与迭代...
昨天学完了数据类型,那么今天学习什么鸭? 惨绿青年:今天来学习条件判断.循环和迭代吧. 条件判断 惨绿青年:说条件判断之前,先给你说下前面的布尔值. 我:布尔值咋了,怎么又说它鸭? 惨绿青年:布尔值不 ...
- python中time库是什么意思_python中time库的time.time()函数的作用是什么
python中time库的time.time()函数的作用是什么? 作用:Python time time() 返回当前时间的时间戳(1970纪元后经过的浮点秒数). time()方法语法:time. ...
- python中time的函数_python中time库的time.time()函数的作用是什么
python中time库的time.time()函数的作用是什么 python中time库的time.time()函数的作用是什么? 作用:Python time time() 返回当前时间的时间戳( ...
- python定义变量名的时候、需要注意问题_python中将函数赋值给变量时需要注意的一些问题...
前言 本文主要给大家介绍的是关于python将函数赋值给变量时需要注意的一些问题,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 见过两种函数赋值给变量的形式,一种是 a=f 另一种是 ...
- VBA实现驼峰法变量名转换成下横杠式变量名
在excel中按ALT+F11打开VBA编辑器,选择插入模块 在模块中输入下面代码: Sub 名称和识别子生成()' 正规表示Dim oRegExp As ObjectDim shtCount As ...
最新文章
- 剖析PHP中的输出缓冲
- 第十七篇 计算机组成原理
- 交易所行情报盘程序配置
- 修改域服务器IP,域控制器迁移以及修改服务器ip
- python一张图学懂_【python系统学习07】一张图看懂字典并学会操作
- linux定时任务总结。
- Android Studio(五):修改Android Studio项目包名
- 租车信息系统数据库设计(2)
- 【4】Kafka集群启动/关闭脚本
- 阿里、美团、滴滴产品经理共述:产品经理的“乐”与“伤”
- 【观点】Ruby优于Python之处(面向hackers)
- Centos 6.4 /var/log/secure 日志不记录问题
- 中国天气预报网接口及城市代码
- 【Unity】Unity3D RPG游戏制作实例(二)开发思路及概要设计
- vasp计算-INCAR文件
- 【verbs】ibv_query_port()
- web网站中常见攻击手法与原理
- 外贸企业邮箱那个好用,哪个企业邮箱最好用?
- MyBatis级联一对一与一对多
- ArcMap 镶嵌数据集基本使用方法