首页
学习
活动
专区
圈层
工具
发布

python变量前的单下划线(私有变量)和双下划线

1.单下划线变量前的单下划线表示表面上私有 ,但是其实这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问...2.双下划线变量前的双下划线表示真正的私有,实际上的私有,只有内部可以访问,外部不能访问。...3.其他(如:init):名称前后的双下划线是一种惯例,对Python系统来说,这将确保不会与用户自定义的名称冲突。通常,你将会覆写这些方法,并在里面实现你所需要的功能,以便Python调用它们。...例如,当定义一个类时,你经常会覆写“init”方法总结:前面单下划线_var变量所在模块/类以外的地方也能访问该变量,但最好不要前面双下划线__privateVar变量所在模块/类以外的地方不能访问该变量...,这是私有变量前后双下划线如__name__和__init__Python内置特殊变量,哪儿都可以访问示例:class MyName: _name = "WinerChan111" # 伪私有变量

2.3K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    python073_下划线在python里是什么含义_内部变量_私有变量_系统变量

    字(可选)这些变量以下划线(_)开头 是 模块的 内部变量为什么 下划线开头 就是 内部变量 呢?...可选)在random模块中 有很多变量和函数 非下划线开头的 可以被导入进来下划线开头的 不能被导入进来添加图片注释,不超过 140 字(可选)导入进来的 都是 没有 下划线的如果 就想要 导入...带下划线的 内部变量 呢?...点名道姓 from random import _e 指定好那个变量的名字 就可以添加图片注释,不超过 140 字(可选)我就想要引入_e这个内部变量 有下划线开头的变量是隐藏变量需要点名导入变量...点名 导入 带下划线的 隐藏变量就可以了添加图片注释,不超过 140 字(可选)变量名 前面 加下划线指的是 模块内部变量如果在 变量名 后面 加 下划线又是 什么意思 来着?

    52800

    JS 变量提升

    问到 JS 一些细节问题的时候发挥比较糟糕,有些是知道反应得太慢,有些是压根没接触过,还是积累的太少了。这篇的 JS 变量提升问题就是从没有接触过的,网上一搜一大把,实在是不应该。...,但对变量提升的具体行为则不了解了。...在蝴蝶书里有一笔带过提了一句“通常编写代码提倡把变量声明尽量贴近变量使用的位置,以提供上下文参考,但 Javascript 没有块级作用域,所以反而推荐在函数的顶部给出所有用到变量的声明。”...而后又被赋值 10 ,至于全局变量 foo 完全没参与进来。 虽然考点是变量提升,但个人认为,答出变量提升顶多合格分,这道题还有更实用的现实意义。 ---- 由于 !...因此才会有前面蝴蝶书的那一段话,建议把函数内用到的所有变量的声明写在函数开头。

    10K20

    python中那些双下划线开头得函数和变量

    Python中下划线---完全解读 Python 用下划线作为变量前缀和后缀指定特殊变量_xxx 不能用from module import *导入__xxx__系统定义名字__xxx类中的私有变量名核心风格...:避免用下划线作为变量名的开始。...因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。一般来讲,变量名_xxx被看作是“私有 的”,在模块或类外不可以使用。...当变量是私有的时候,用_xxx来表示变量是很好的习惯。因为变量名__xxx__对Python 来说有特殊含义,对于普通的变量应当避免这种命名风格。...“单下划线” 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;“双下划线” 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

    97210

    为什么Python中有的变量前面要加个下划线_?

    你有没有在别人的Python代码中看到过,有些变量或方法前面多了一个下划线 _,比如下面这个例子: class User: def __init__(self, name, age):...self.name = name # 正常变量 self....这套约定主要来自官方的 PEP 8 风格指南:单前导下划线 _var 含义:这是一个 “非公开”(non-public) 或 “内部使用” 的变量/方法。...另外在实际使用中,带下划线的变量有两点特殊的效果: 1. 当别人用 from module import * 时,以 _ 开头的名称不会被导入。 2....单独一个下划线 _ 在循环或解包时,用来作为满足语法的临时变量,表示“我不关心这个值”: for _ in range(5): # 不需要循环变量 print("hello")

    42510

    Js中的变量

    Js中的变量:  1:如果在var中没有初始化变量的值,则默认为undefined.  2:可以不用var来申明一个变量,但是在过程级中申明一个变量时,就必须用var.   ...总之用var就对了.  3:当要声明一个变量并进行初始化,但又不想指定任何特殊值,可以赋值为 JScript 值 null。下面给出示例。   ...var bestAge = null;  4:如果声明了一个变量但没有对其赋值,该变量存在,其值为Jscript 值 undefined。下面给出示例。    ...js中的数据类型  1:Jscript 有三种主要数据类型、两种复合数据类型和两种特殊数据类型    主要(基本)数据类型是: 字符串 数值 布尔    复合(引用)数据类型是: 对象 数组    特殊数据类型是...: Null Undefined  2:测试是否已经声明变量 x :    if (typeof(x) == "undefined")      // 作某些操作 js中的内置对象  1:Jscript

    18K60

    关于python中带下划线的变量和函数的意义

    大写加下划线的变量: 标明是 不会发生改变的全局变量函数:1. 前带_的变量: 标明是一个私有函数, 只用于标明,2....br> "单下划线 " 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量; "双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。...1 变量 常量 : 大写加下划线USER_CONSTANT对于不会发生改变的全局变量,使用大写加下划线。...私有变量 : 小写和一个前导下划线_private_valuePython 中不存在私有变量一说,若是遇到需要保护的变量,使用小写和一个前导下划线。...内置变量 : 小写,两个前导下划线和两个后置下划线__class__两个前导下划线会导致变量在解释期间被更名。这是为了避免内置变量和其他变量产生冲突。用户定义的变量要严格避免这种风格。以免导致混乱。

    12.4K42

    JS全局变量

    创建的变量被绑定到声明环境记录中 通过var和函数声明的变量被绑定到对象环境记录中 声明环境变量中变量优先访问 使用ECMAScript和宿主环境的内置全局变量初始化全局对象 文章概要 Scope(作用域...我们在前期的文章中,描述了,V8执行JS代码核心流程 1. 先编译 2. 后执行。在这个编译的过程就是「静态」的。所以我们可以这么说,作用域是「不随代码的运行而改变」的变量查找机制。...❝JS的作用域是静态的 ❞ 同时,作用域还可以被嵌套。...声明环境记录(declarative environment record): 拥有属于自己的存储空间来存放binding 5.1 Script 作用域 和Module 作用域 在JS中,只有在script...所有ECMAScript内置的全局变量 宿主环境的所有内置全局变量(浏览器、Node.js等) 使用const/let定义的全局变量可以保证不受ECMAScript和宿主环境的内置全局变量影响。

    16.3K60

    Fabric.js 上划线、中划线(删除线)、下划线🎭

    在 HTML 也好,Word 也好,基本都有下划线和删除线(中划线)。 Fabric.js 作为一个老牌 canvas 库,当然也提供中划线和下划线的配置啦,除此之外还提供了上划线的配置。...\n\n\n 本文要讲解的就是这3种装饰线在 fabric.js 中的使用方法。除了初始化配置外,还支持项目运行时,让用户动态配置。本文案例使用了 IText ,该组件支持编辑功能。...初始化时设置 这是上划线、中划线和下划线的文档: - 上划线 overline - 中划线 linethrough - 下划线 underline <canvas id="c" width="300"...动态设置 除了在初始化时可以设置装饰线外,Fabric.js 也提供了在运行时用户手动设置。不过代码会稍微复杂一点。 其实动态设置上划线、中划线和下划线的操作都是一样的,唯一要变的就是属性名。...我以中划线为例,之后上划线和下划线只需改个属性名。

    3.6K20

    js中全局变量_var变量提升原理

    今天说一说js中全局变量_var变量提升原理,希望能够帮助大家进步!!!...),从而确定变量的作用域,所以在函数test执行前,由于第6行声明了局部变量a,所以函数内部的a都指向已经声明的局部变量,所以第4行输出100。...第7行输出结果为100,因为局部变量a在第3行已经被赋值了100,所以直接输出局部变量a的值。...,没用var声明的一般为全局变量,在test函数内,a=10声明了一个全局变量,所以第3行的a应该输出全局变量的值,而在函数执行之前已经声明过一个全局变量并赋值100,所以这里第上输出100。...第4行给全局变量a 重新赋值10,所以全局变量a的值变成10,所以第5行输出10。而在函数test外部,第8行输出全局变量a的值,因为全局变量被重新赋值为10,所以输出结果即为10。

    7.9K30

    理解js的变量提升

    深刻理解变量提升 当执行 JS 代码时,会生成执行环境,只要代码不是写在函数中的,就是在全局执行环境中,函数中的代码会产生函数执行环境,只此两种执行环境。...undefined var a = 'Hello world' function b() { console.log('call b') } 想必以上的输出大家肯定都已经明白了,这是因为函数和变量提升的原因...第一个阶段是创建的阶段,JS 解释器会找出需要提升的变量和函数,并且给他们提前在内存中开辟好空间,函数的话会将整个函数存入内存中,变量只声明并且赋值为 undefined,所以在第二个阶段,也就是代码执行阶段...在提升的过程中,相同的函数会覆盖上一个函数,并且函数优先于变量提升 b() // call b second function b() { console.log('call b fist')

    6.8K20
    领券