千锋教育-做有情怀、有良心、有品质的IT职业教育机构

位置:首页 > 行业动态

武汉Python培训分享 变量中的标识符含义

时间:2017-12-18 18:05:55  |  来源:武汉千锋  |  作者:千锋

  相信很多学习Python编程的同学都知道代码的风格统一很重要。PEP8这个文档针对这样的情况做了非常规范的描述,这样在不同人编写Pytho代码的时候可以大程度的利于不同开发者的阅读和维护。

武汉Python培训分享:变量中的标识符含义

  本篇主要是针对Python语言中的一点血标识符进行分析,来看看变量中带有标识符或者函数命名代表的不同含义是什么。

  前后均带有双下划线__的命名

  一般用于特殊方法的命名,用来实现对象的一些行为或者功能,比如__new__()方法用来创建实例,__init__()方法用来初始化对象,

  x + y操作被映射为方法x.__add__(y),序列或者字典的索引操作x[k]映射为x.__getitem__(k),__len__()、__str__()分别被内置函数len()、str()调用等等。

  仅开头带双下划线__的命名

  用于对象的数据封装,以此命名的属性或者方法为类的私有属性或者私有方法。

  class Foo(object):

  def __init__(self):

  self.__name = 'private name'

  def getname(self):

  return self.__name

  def __spam(self):

  print 'private method'

  def bar(self):

  self.__spam()

  如果在外部直接访问私有属性或者方法:

  >>> f = Foo()

  >>> f.__name

  Traceback (most recent call last):

  File "", line 1, in

  f.__name

  AttributeError: 'Foo' object has no attribute '__name'

  >>> f.__spam()

  Traceback (most recent call last):

  File "", line 1, in

  f.__spam()

  AttributeError: 'Foo' object has no attribute '__spam'

  是不可行的,这就起到了隐藏数据的作用,但是这种实现机制并不是很严格,机制是通过自动"变形"实现的,类中所有以双下划线开头的名称__name都会自动变为"_类名__name"的新名称:

  >>> f._Foo__name

  'private name'

  >>> f._Foo__spam()

  private method

  这样就可以访问了。

  这种机制可以阻止继承类重新定义或者改方法的实现,比如,定义一个Foo的派生类:

  class Goo(Foo):

  def __spam(self):

  print 'private method of Goo'

  重写了__spam方法,运行:

  >>> g = Goo()

  >>> g.bar()

  private method

  调用bar()方法的时候依然执行的是Foo类的__spam()方法,因为在bar()方法的实现中,self.__spam()已自动变形为self._Foo__spam(),Goo继承的bar()方法也是如此。

  以单下划线_开头的命名

  一般用于模块中的"私有"定义的命名。

  from module import * 语句用于加载模块中的所有名称,要控制导入的名称,一种方法是定义列表__all__,只有在__all__中的名称才能通过*导入,

  另一种方法就是以单下划线开头命名定义了,这种定义不会被*导入。

  当然,在类中也可以用单下划线开头来命名属性或者方法,这只是表示类的定义者希望这些属性或者方法是"私有的",但实际上并不会起任何作用。

  通过上面对于Python命名中中带有标识符的了解,相信在以后的编程中能够加得心应手,率的编写每一个代码。如果觉得本篇文章还不错,那么可以通过浏览本站武汉python培训来查看多的Python知识。同时欢迎多的喜欢Python的人来时千锋武汉Python培训机构学习。

上一篇:距离岗位只差一个千锋武汉Linux培训
下一篇:武汉软件测试培训靠不靠谱 实力说了算

新开班信息

  • 武汉 Java培训班 06.11 抢座
    武汉 HTML5培训班 05.14 抢座
    武汉 Python培训班 05.07 抢座
    武汉 Java培训班 04.23 抢座
    武汉 HTML5培训班 04.16 抢座
    武汉 Python培训班 03.26 开班
    武汉 Java培训班 03.19 开班
    武汉 HTML5培训班 03.19 开班
    武汉 HTML5培训班 03.05 开班
    武汉 Python培训班 02.26 开班
    武汉 Java培训班 01.15 开班
企业之声 more >
  • 人事专员
    【北京博彦科技有限公司】人事专员

    技术方面,千锋的学员理论和实践相结合,既懂得功能实现的原理,又能股自己动手实现,技术能力是符合我公司对专业技术人员的需求的。

  • 人事专员
    【北京惠博科技有限公司】人事专员

    千锋的额技术能力,我们公司的面试官都是很认可的,能够满足我公司对此类人才的需求。

  • 人事专员
    【北京联想有限公司】人事专员

    千锋毕业的学员很不错,能够满足我公司对中级工程师的需求。

武汉校区咨询电话

027-65523826

0元入学 线上咨询 申请试听
  • 西安南二环校区:西安市二环南路西段60号永安大厦4层
    西安科技园校区:西安市高新六路52号立人科技园C座西区4层
    咨询电话:029-85260160 029-85261030 029-85260960
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 北京天丰利校区:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术广场服务楼2层、南区服务楼2层
    咨询电话:400-654-7778 010-82790226-801
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训、好程序员特训营
  • 深圳科技园校区:深圳市南山区科苑南路高新技术产业园R3-B栋5层
    深圳大学城校区:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    深圳西部硅谷校区:深圳市宝安区宝安大道5010号深圳西部硅谷B座A区605-619
    咨询电话:0755-86681178/9-801
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、好程序员特训营、UI课程培训
  • 上海地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-65025129-602
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、好程序员特训营、UI课程培训
  • 郑州地址:郑州市金水区纬五路21号河南教育综合楼(经纬中学楼)6/7/8层
    咨询电话:0371-55911950 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 广州地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 大连地址:大连市甘井子区软件园路2号B8座二楼
    咨询电话:0411-39026086 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 武汉地址:武汉市东新区光谷大道77号金融港B26栋9楼
    咨询电话:027-59905902 027-59905908 027-59905909
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 成都地址:成都市武侯区科华北路62号力宝大厦N(北楼)18楼
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 杭州地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 了解千锋动态
    关注千锋教育服务号

  • 扫码关注千锋互联
    身边的移动开发导师