python下划线的五种含义,python 定义函数 下划线

发布时间:2022-11-17

本文目录一览:

  1. Python中下划线的变量是什么个意思
  2. python下划线定义属性
  3. Python中下划线是什么意思
  4. python中以下划线开头的变量名的含义
  5. Python-的类的下划线命名有什么不同

Python中下划线的变量是什么个意思

  1. _xxx 不能用于 from module import *。以单下划线开头的表示的是 protected 类型的变量。即保护类型只能允许其本身与子类进行访问。
  2. __xxx 双下划线的表示的是私有类型的变量。只能是允许这个类本身进行访问了。连子类也不可以。
  3. __xxx__ 定义的是特例方法。像 __init__ 之类的。

python下划线定义属性

类的私有变量和私有方法。 在 Python 中可以通过在属性变量名前加上双下划线定义属性为私有属性。

特殊变量命名

  1. _xx 以单下划线开头的表示的是 protected 类型的变量。即保护类型只能允许其本身与子类进行访问。若内部变量标示,如:当使用 from M import * 时,不会将以一个下划线开头的对象引入。
  2. __xx 双下划线的表示的是私有类型的变量。只能允许这个类本身进行访问了,连子类也不可以。用于命名一个类属性(类变量),调用时名字被改变(在类 FooBar 内部,__boo 变成 _FooBar__boo,如 self._FooBar__boo)。
  3. __xx__ 定义的是特例方法。用户控制的命名空间内的变量或是属性,如 __init____import__ 或是 __file__。只有当文档有说明时使用,不要自己定义这类变量(就是说这些是 Python 内部定义的变量名)。 在这里强调说一下私有变量,Python 默认的成员函数和成员变量都是公开的,没有像其他类似语言的 publicprivate 等关键字修饰。但是可以在变量前面加上两个下划线 _,这样的话函数或变量就变成私有的。这是 Python 的私有变量轧压(这个翻译好拗口),英文是(private name mangling)。情况就是当变量被标记为私有后,在变量的前端插入类名,再类名前添加一个下划线 _,即形成了 _ClassName__变量名

Python内置类属性

  • __dict__:类的属性(包含一个字典,由类的数据属性组成)
  • __doc__:类的文档字符串
  • __module__:类定义所在的模块(类的全名是 '__main__.className',如果类位于一个导入模块 mymod 中,那么 className.__module__ 等于 mymod
  • __bases__:类的所有父类构成元素(包含了一个由所有父类组成的元组)

Python中下划线是什么意思

  1. 用在 Python 解释器,表示上一次的执行结果。 即使不把 Python 用于编程,也可以把它用作智能计算器,下划线保存上次的计算结果,在计算时相当方便:
    4 + 3
    # 7
    _
    # 7
    _ + 2
    # 9
    a = 10
    _
    # 9
    
  2. 代码中一个独立的下划线,表示这个变量不重要。 一个独立的下划线,它也是一个变量名,只不过它比较特殊,当你使用下划线作为变量名时,就代表你告诉大家,这个变量不重要,仅仅占个位置,可以忽略,后面不会再使用它。 当然了,这只是一种约定俗成,你要是不遵守也是可以的,毕竟在后面你还可以通过下划线来获取这个变量的值。
    for i, _ in [(1, 2), (3, 4)]:
        print(i)
    
    上面的代码表示我们只需要列表内部元组的第一个,第二个其实赋值给了下划线,虽然后面你可以通过下划线来取到值,但是强烈建议你不要这么做,这违反了约定。
  3. 双下划线开头和结尾的方法,是魔术方法。 比如常见的 __int____dict____dir____doc____eq__ 等等。
  4. 作为变量名中间的一部分。 相比驼峰命名,这叫做蛇形命名,比如 user_name
  5. 作为数字中间的一部分,更易读。
    10_000_000
    # 10000000
    1_280_500_000 == 1280500000
    # True
    

python中以下划线开头的变量名的含义

  • _xx:前面单个下划线,私有化属性或方法,变量不能被外部直接调用。
  • __xx:前面两条下划线,私有化属性或方法,无法在外部直接访问,只允许类本身调用。
  • __xx__:前后两条下划线,系统定义名字,对 Python 来说有特殊用途。
  • xx_:后面单条下划线,用于避免与 Python 关键词的冲突。

Python-的类的下划线命名有什么不同

首先是单下划线开头,这个被常用于模块中,在一个模块中以单下划线开头的变量和函数被默认当作内部函数,如果使用 from a_module import * 导入时,这部分变量和函数不会被导入。不过值得注意的是,如果使用 import a_module 这样导入模块,仍然可以用 a_module._some_var 这样的形式访问到这样的对象。 在 Python 的官方推荐的代码样式中,还有一种单下划线结尾的样式,这在解析时并没有特别的含义,但通常用于和 Python 关键词区分开来,比如如果我们需要一个变量叫做 class,但 class 是 Python 的关键词,就可以以单下划线结尾写作 class_。 双下划线开头的命名形式在 Python 的类成员中使用表示名字改编(Name Mangling),即如果有一个 Test 类里有一成员 __x,那么 dir(Test) 时会看到 _Test__x 而非 __x。这是为了避免该成员的名称与子类中的名称冲突。但要注意这要求该名称末尾没有下划线。 双下划线开头双下划线结尾的是一些 Python 的“魔术”对象,如类成员的 __init____del____add____getitem__ 等,以及全局的 __file____name__ 等。Python 官方推荐永远不要将这样的命名方式应用于自己的变量或函数,而是按照文档说明来使用。 另外单下划线开头还有一种一般不会用到的情况在于使用一个 C 编写的扩展库有时会用下划线开头命名,然后使用一个去掉下划线的 Python 模块进行包装。如 struct 这个模块实际上是 C 模块 _struct 的一个 Python 包装。 更多关于命名的内容可以参考 PEP 8 《代码风格指南》的 Name Conventions 一节: 需要说明的是,由于这份文档看起来经过多次修改,双下划线开头的用法似乎曾经如 @makestory 所说,建议为类的私有成员,至少啄木鸟社区的 PEP 8 译文是这样写的,但 PEP 8 当前的官方版本中并没有体现。