在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以下划线开头的变量和函数的作用相关推荐

  1. python下划线怎么输入_python中下划线的用法

    Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划 ...

  2. python程序中长下划线怎么打_python中下划线怎么输入

    python中下划线使用键盘上的Shift+减号键即可打出,减号键位于0和加号键之间. 在Python中下划线还具有 private 和 protected 类似的访问权限作用,下面我们具体分析.Py ...

  3. python两个下划线怎么打_python中下划线怎么打

    Python中的下划线具有特殊的意义,python用下划线作为变量前缀和后缀指定特殊变量. python中下划线使用键盘上的Shift 减号键即可打出,减号键位于0和加号键之间.(推荐学习:Pytho ...

  4. python下划线怎么输入_Python中下划线的使用方法有哪些

    Python中下划线的使用方法有哪些 主要介绍了Python中下划线的使用方法,是为python编程学习中的基本知识,需要的朋友可以参考下,就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注 ...

  5. 怎样跳出Python条件语句 继续判断下一个条件语句_Python条件判断、循环与迭代...

    昨天学完了数据类型,那么今天学习什么鸭? 惨绿青年:今天来学习条件判断.循环和迭代吧. 条件判断 惨绿青年:说条件判断之前,先给你说下前面的布尔值. 我:布尔值咋了,怎么又说它鸭? 惨绿青年:布尔值不 ...

  6. python中time库是什么意思_python中time库的time.time()函数的作用是什么

    python中time库的time.time()函数的作用是什么? 作用:Python time time() 返回当前时间的时间戳(1970纪元后经过的浮点秒数). time()方法语法:time. ...

  7. python中time的函数_python中time库的time.time()函数的作用是什么

    python中time库的time.time()函数的作用是什么 python中time库的time.time()函数的作用是什么? 作用:Python time time() 返回当前时间的时间戳( ...

  8. python定义变量名的时候、需要注意问题_python中将函数赋值给变量时需要注意的一些问题...

    前言 本文主要给大家介绍的是关于python将函数赋值给变量时需要注意的一些问题,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 见过两种函数赋值给变量的形式,一种是 a=f 另一种是 ...

  9. VBA实现驼峰法变量名转换成下横杠式变量名

    在excel中按ALT+F11打开VBA编辑器,选择插入模块 在模块中输入下面代码: Sub 名称和识别子生成()' 正规表示Dim oRegExp As ObjectDim shtCount As ...

最新文章

  1. 剖析PHP中的输出缓冲
  2. 第十七篇 计算机组成原理
  3. 交易所行情报盘程序配置
  4. 修改域服务器IP,域控制器迁移以及修改服务器ip
  5. python一张图学懂_【python系统学习07】一张图看懂字典并学会操作
  6. linux定时任务总结。
  7. Android Studio(五):修改Android Studio项目包名
  8. 租车信息系统数据库设计(2)
  9. 【4】Kafka集群启动/关闭脚本
  10. 阿里、美团、滴滴产品经理共述:产品经理的“乐”与“伤”
  11. 【观点】Ruby优于Python之处(面向hackers)
  12. Centos 6.4 /var/log/secure 日志不记录问题
  13. 中国天气预报网接口及城市代码
  14. 【Unity】Unity3D RPG游戏制作实例(二)开发思路及概要设计
  15. vasp计算-INCAR文件
  16. 【verbs】ibv_query_port()
  17. web网站中常见攻击手法与原理
  18. 外贸企业邮箱那个好用,哪个企业邮箱最好用?
  19. MyBatis级联一对一与一对多
  20. ArcMap 镶嵌数据集基本使用方法

热门文章

  1. 从幂律分布到特征数据概率分布——12个常用概率分布
  2. centos 中文乱码_StudingThinking_百度空间
  3. AD_Copy Room
  4. 虚拟机VM利用U盘重装系统
  5. 数学建模暑期集训6:用SPSS对数据进行多元线性回归分析
  6. 零基础的小明要如何成为前端工程师?
  7. Java获取word表格中的数据
  8. C++ 繁华的曼哈顿
  9. Android—ImageView—自定义四个圆角角度
  10. Anolis OS 8.2 RC2 发行,支持飞腾、海光、兆芯、鲲鹏等芯片