首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python垃圾收集器的行为与_ single underscore变量名有什么不同吗?它真的是一个“一次性”变量吗?

Python垃圾收集器的行为与_ single underscore变量名有什么不同吗?它真的是一个“一次性”变量吗?

Python垃圾收集器是负责自动管理内存的机制,它会在变量不再被引用时自动释放内存。与此不同,_ single underscore变量名是一种约定,用于表示一个临时或无关紧要的变量。

垃圾收集器的行为是基于引用计数的,当一个对象的引用计数为0时,垃圾收集器会将其标记为垃圾并释放相关内存。这意味着当一个变量不再被引用时,垃圾收集器会自动回收其占用的内存。

而_ single underscore变量名的约定是告诉其他开发者,这个变量是临时的或无关紧要的,不建议在后续代码中使用它。这种约定的目的是提醒开发者不要过多关注这个变量,避免产生不必要的混淆。

虽然_ single underscore变量名可以被多次赋值,但它并不是一个真正的“一次性”变量。它的生命周期与其他变量相同,只是通过约定告诉其他开发者不要过多关注它。

总结起来,Python垃圾收集器是一种自动管理内存的机制,而_ single underscore变量名是一种约定,用于表示临时或无关紧要的变量。它们的作用和行为是不同的,不能混淆使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

基础知识|初入Python语法和注释(三)

「Python 变量命名规则」 变量名必须以字母或下划线字符开头 变量名称不能以数字开头 变量名只能包含字母数字字符和下划线(A-z、0-9 和 _) 变量名称区分大小写(age、Age 和 AGE 是三个不同的变量...,你知道为什么吗?...对于内置的变量命名有一个单独的约定:大部分内置变量是单个单词(或者两个单词连接在一起),首字母大写的命名法只用于异常名或者内部的常量。...bool变量⼀般加上前缀 is_ 如:is_success 变量名不要用系统关键字,如 dir type str等等 以下用下画线作前导或结尾的特殊形式是被公认的: _single_leading_underscore...single_trailing_underscore_(以一个下画线结尾):用于避免与 Python 关键词的冲突,例如“Tkinter.Toplevel(master, class_='ClassName

16210

Python专家编程系列: 5. 下划线在命名中的约定(Underscores in Python)

这些含义有些是一种认为约定,有些是python解释器严格执行的准则。 有必要掌握这些约定,来写出专业的代码。 2....规范详解 3.1 单前下划线(Single Leading Underscore): _variable 根据 PEP8,变量名称中的单个前导下划线仅供内部使用。...此通配符导入不包括私有导入,这就是为什么在尝试访问单前下划线变量时引发异常的原因。除了变量以外,函数命名也是一样的规则。 所以这里它是由Python解释器强制执行的。...实际访问是不受限制的。 单前下划线的变量和函数,在py文件中的定义,被其它py文件导入时是不可见的,这是被Python解释器执行的。..._Double__b 2 从上面的输出中,可以看到 self.a 没有改变并且行为方式相同。 但是__b为了避免名称与子类发生冲突而Double__id。

24340
  • 面渣逆袭:JVM经典五十问,这下面试稳了!

    说真的,JVM调优什么的一个程序员可能整个职业生涯都碰不到两次,但是,一旦用到的时候,那就是救命了,而且最重要的是——面试必问,所以,还能怎么办?整! 引言 1.什么是JVM?...目前只有G1收集器会有这种行为。 整堆收集(Full GC):收集整个Java堆和方法区的垃圾收集。 21.Minor GC/Young GC什么时候触发?...如同它的名字(串行),它是一个单线程工作的收集器,使用一个处理器或一条收集线程去完成垃圾收集工作。...Garbage First收集器 Garbage First(简称G1)收集器是垃圾收集器的一个颠覆性的产物,它开创了局部收集的设计思路和基于Region的内存布局形式。...Garbage First(简称G1)收集器是垃圾收集器的一个颠覆性的产物,它开创了局部收集的设计思路和基于Region的内存布局形式。

    80830

    下划线在 Python 中的特殊含义

    Python 中的下划线 下划线在 Python 中是有特殊含义的,它们在 Python 的不同地方使用。 下面是 Python 中使用的不同类型的下划线: ? 1. 单下划线 ?...保存上次执行的表达式的值 使用一个下划线保存 Python 交互式命令提示符中最后执行的表达式的值。我们还可以将值保存到另一个变量。 ?...单个前缀下划线 可以在变量名、方法名和类名中使用单个前缀下划线。它表示这些带有一个前缀下划线的类、变量和方法名称被程序视为“私有”。...b)#helloworld 如果我们想导入只有一个前缀下划线的变量和函数,那么在导入时必须提到这个变量名。...永远不要发明这样的名称,只能根据记录使用。 根据 Python 约定,避免使用具有双前缀和双后缀下划线的变量名。 我们可以使用 dir()函数来查看类继承的神奇方法。

    1K10

    python051_什么样的变量名能用_标识符_identifier

    什么样的变量名能用_标识符_identifier 回忆上次内容 上次 我们 研究了 变量的死有生就有死原本的死 是 在程序退出时 自动执行的也 可以 在运行过程中 手动给变量 赐死突然死亡就是...也叫标识符identifieridentifier 变量名 就像 变量的 身份证identity card添加图片注释,不超过 140 字(可选)之前 说的id函数 就是身份证有什么区别吗?...identifier呢 标识符(identifier)的 唯一 指的是 变量名字是唯一的a = 0 a = 1 重新赋值 不会 声明新变量只是 再次赋值什么样的 标识符 是合法的呢?...添加图片注释,不超过 140 字(可选)找到主题 IDENTIFIERS标识符标识符 python中 标识符的 基本规则第一个字符 只能是 字母和下划线 后面跟 字母和下划线 外加 数字添加图片注释...下划线 硬上是不行的!添加图片注释,不超过 140 字(可选)有什么解决的方法吗?解决方法 如果 非要 数字开头的话 前面 不是可以 加下划线(underscore) 嘛!

    9010

    面试官:JVM是如何判定对象已死的?学JVM必会的知识!

    上面我们讲了可达性分析算法是根据引用来回收的,而对不同的引用类型有不同的处理方式,JVM也是会去「差别对待的」。...要真正宣告一个对象死亡,至少要经历两次标记过程: 如果对象在进行可达性分析后发现没有与GC Roots相连接的引用链,那它将会被第一次标记,随后进行一次筛选,筛选的条件是此对象是否有必要执行finalize...如果对象要在finalize()中成功拯救自己——只要重新与引用链上的任何一个对象建立关联即可,譬如把自己(this关键字)赋值给某个类变量或者对象的成员变量,那在第二次标记时它将被移出「即将回收」的集合...对象的回收行为主要发生在新生代和老年代,那么有兄弟可能会问了,永久代有垃圾回收行为吗? 永久代真的"永久"吗?...并不是名字叫永久代就真的「永久」了,出来混,欠的债总要还的。 我们先搞清楚方法区要回收的是什么,方法区的垃圾收集主要回收两部分内容:「废弃的常量」和「不再使用的类型」。

    30820

    面试官:JVM是如何判定对象已死的?学JVM必会的知识!

    上面我们讲了可达性分析算法是根据引用来回收的,而对不同的引用类型有不同的处理方式,JVM也是会去「差别对待的」。...要真正宣告一个对象死亡,至少要经历两次标记过程: 如果对象在进行可达性分析后发现没有与GC Roots相连接的引用链,那它将会被第一次标记,随后进行一次筛选,筛选的条件是此对象是否有必要执行finalize...如果对象要在finalize()中成功拯救自己——只要重新与引用链上的任何一个对象建立关联即可,譬如把自己(this关键字)赋值给某个类变量或者对象的成员变量,那在第二次标记时它将被移出「即将回收」的集合...对象的回收行为主要发生在新生代和老年代,那么有兄弟可能会问了,永久代有垃圾回收行为吗? 永久代真的"永久"吗?...并不是名字叫永久代就真的「永久」了,出来混,欠的债总要还的。 我们先搞清楚方法区要回收的是什么,方法区的垃圾收集主要回收两部分内容:「废弃的常量」和「不再使用的类型」。

    16920

    一个专家眼中的Go与Java垃圾回收算法大对比

    GC 理论基础 下面是在设计垃圾收集算法时您想要考虑的不同因素: 程序吞吐量:你的算法在多大程度上减慢程序?这表示为花费在执行垃圾收集与工作时间的百分比。...调优:垃圾收集器的配置有多复杂,可以开箱即用并获得最佳性能吗? 预热时间:垃圾收集算法是否基于测量行为进行自适应调整?需要多长时间才能达到最佳? 内存释放:您的算法是否释放未使用的内存回到操作系统?...它可以与设计时没有考虑GC的语言(如 C++)一起工作吗?它需要修改编译器吗?如果是这样,更改GC算法是否需要重新编译所有程序和依赖关系?...暂停分布:与程序并发运行的任何垃圾收集器都可能遇到Java中“并发模式失败”的问题:您的程序创建垃圾的速度比GC线程可以清除它快。...这是一个好的权衡吗?暂停时间已经足够低吗? 付出更多的硬件成本以获得较低的暂停时间,在一些情况下未必有意义。如果你的服务器暂停时间从 10msec 降低到 1msec,你的用户真的会注意到吗?

    2.1K50

    python057_如何删除print函数_dunder_builtins_系统内建模块

    很多本地变量 两边 都有 两个下划线__name____doc____builtins__有什么说法吗??...询问 添加图片注释,不超过 140 字(可选)双下划线 是 系统建立的有特殊的含义去游乐场 问问python本人说明文档 直接help主题的名字help("IDENTIFIERS") 查找 标识符的帮助添加图片注释...print 就是__builtins__ 模块里的 函数添加图片注释,不超过 140 字(可选)能删除吗?...有17个字符发音是6声而dunder 只有6个字符发音是2声简单多了添加图片注释,不超过 140 字(可选)dunder 意味着 这个变量 是 系统定义 的!...总结 这次玩的 还是 下划线位置和数量作用一个放后面避免名字冲突两个放两边系统变量添加图片注释,不超过 140 字(可选)能把内建模块(builtins) 覆盖掉吗??我们下次再说!

    4800

    Java虚拟机(JVM)面试题(2020最新版)

    请简单描述 垃圾收集器 简述Java垃圾回收机制 GC是什么?为什么要GC 垃圾回收的优点和原理。并考虑2种回收机制 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?...在Java中,对象什么时候可以被垃圾回收 JVM中的永久代中会发生垃圾回收吗 说一下 JVM 有哪些垃圾回收算法?...垃圾回收有分代复制垃圾回收、标记垃圾回收、增量垃圾回收。 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?...此外,G1收集器不同于之前的收集器的一个重要特点是:G1回收的范围是整个Java堆(包括新生代,老年代),而前六种收集器回收的范围仅限于新生代或老年代。 详细介绍一下 CMS 垃圾回收器?...Java类的加载是动态的,它并不会一次性将所有类全部加载后再运行,而是保证程序运行的基础类(像是基类)完全加载到jvm中,至于其他类,则在需要的时候才加载。

    3.2K21

    全面&详细的面试指南:Java虚拟机(JVM)篇 (附答案)

    垃圾收集算法 不同的内存区域采用不同的垃圾收集算法,而不同垃圾收集算法决定了垃圾收集的效率 & 效果。主要考察点包括: 垃圾收集算法有哪些类型? 每种垃圾收集算法的原理、特点、应用场景分别是什么?...Minor GC 与 Full GC 分别在什么时候发生? 如果需要优化垃圾收集方法,有什么方向及思路?...垃圾收集器 垃圾收集器是垃圾收集算法的具体实现,考察的内容包括: 常见的垃圾收集器有哪些? 不同类型的垃圾收集器其优点、缺点是什么? CMS收集器跟G1收集器有什么了解?它们的特点分别是什么?...上述问题的答案,具体请看文章:Carson带你学JVM:常见的垃圾收集器学习指南 考察点4:类加载 即Java类是如何被加载的。这里主要考察的内容是: 类加载的本质是什么? 类加载的过程有哪些步骤?...上述问题的答案,具体请看文章: Carson带你学JVM:类加载的全过程解析 Carson带你学JVM:你真的了解类加载器吗?

    38910

    五位卷王 | 总结的十道 JVM 面试真题!(建议收藏)

    一般是把Java堆分为新生代和老年代,这样就可以根据各个年代的特点使用不同的回收算法,以提高垃圾回收的效率。 年轻代:复制算法 老年代:由标记-清除或者是标记-清除与标记-整理的混合实现。...ParallelScavengeParallel Scavenge 也是一款用于新生代的多线程收集器,与 ParNew 的不同之处是ParNew 的目标是尽可能缩短垃圾收集时用户线程的停顿时间,Parallel...CMS与G1的区别 1.CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收 集器一起使用;G1收集器收集范围是老年代和新生代,不需要结合其他收集器使用;2.G1收集器可预测垃圾回收的停顿时间...什么是STW 暂停用户线程 - Stop The World 为什么要STW 如果不暂停用户线程,就意味着不断有垃圾的产生,永远也清理不干净;其次,因为清理垃圾用的标记清除算法,用户线程的运行必然会导致对象的引用关系发生变化...垃圾对象:简单的说,就是判断是否有引用,如果某个对象,已经没有任何引用指向它,就把该对象定义为垃圾对象,即我们要清理的对象,这个的核心就是可达性分析算法。

    45121

    Python面试必须要看的15个问题

    答案 下面是一些关键点: Python是一种解释型语言。这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需要编译。其他解释型语言还包括PHP和Ruby。...为什么提这个问题: 如果你应聘的是一个Python开发岗位,你就应该知道这是门什么样的语言,以及它为什么这么酷。以及它哪里不好。 问题2 补充缺失的代码 答案 特别要注意以下几点: 命名规范要统一。...下面的例子展示了它们的用法和行为: 问题10 阅读下面的代码,它的输出结果是什么? 答案 输出结果以注释的形式表示: 为什么提这个问题? 因为面向对象的编程真的真的很重要。不骗你。...其他不显而易见的问题仍然可以通过恰当的工具来定位。因此了解这些工具是有好处的。 问题14 你有过失败的经历吗? 错误的答案 我从来没有失败过! 为什么提这个问题?...如果你真的是个完人,那就太糟了,回答这个问题的时候你可能都有点创意了。 问题15 你有实施过个人项目吗? 真的?

    1.2K90

    JVM垃圾收集之——怎样判定一个对象是不是垃圾

    文章目录 1引用计数法 2可达性分析 3一个对象真的非死不可吗?...接下来如果有一个引用消失了,变成二,再有一个引用消失变成一,最后当引用全部消失这个数变成零,当它变成零的时候,这对象成为了垃圾(Python 就是使用这样的方式)。...总结: 如果一个对象没有引用指向它的时候,或者说引用计数器里面的值为0的时候,表示该对象就是垃圾。 缺陷:当有循环引用的时候,导致无法回收掉本该是垃圾的对象。...那Java是使用的这一种垃圾回收方法吗?...2可达性分析 Java是使用一种叫GC Root的算法,是什么意思呢? 从根上的引用去找对象,能够被根节点引用找到的对象都不是垃圾,不用回收,如果是从根节点引用找不到的对象都是垃圾。

    34030

    几个面试官常问的垃圾回收器,下次面试就拿这篇文章怼回去!

    比如,面试官一上来就狠狠的问了这几个问题。 你可以介绍一下Java虚拟机的垃圾回收器吗? 你可以介绍一下CMS垃圾回收器的原理吗? 你可以介绍一下G1垃圾回收器的原理吗,跟CMS有什么区别?...除了使用多线程进行垃圾收集外,其余行为包括Serial收集器可用的所有控制参数、收集算法(复制算法)、Stop The World、对象分配规则、回收策略等与Serial收集器完全相同。...Parallel Scavenge收集器的特点是它的关注点与其他收集器不同,CMS等收集器的关注点是尽可能缩短垃圾收集时用户线程的停顿时间。...2.2 老年代垃圾回收器 2.2.1 Serial Old Serial Old 是Serial收集器的老年代版本,它同样是一个单线程收集器,使用“标记-整理”(Mark-Compact)算法。...它的工作流程与Serial收集器相同,下图是Serial/Serial Old配合使用的工作流程图: ?

    89720

    2020--Python语法常考知识点

    垃圾回收是在正在运行的程序中查找将来无法访问的数据对象,并回收那些对象所使用的资源(尤其是内存)的过程。 自动垃圾收集的语言--Java,C#,Python和大多数脚本语言。...缺点是,当垃圾收集器运行时,程序会暂停所有的线程。...垃圾收集器使用启发式方法提高速度。 例如,根据经验,最近创建的对象更有可能死掉。 因此,在创建对象时,将它们分配给不同的代,然后首先检查年轻的代。...类似地,如果对象本身是不可变的,例如tuple,则无需拷贝它。 3.3 迭代器和生成器 问:迭代器和生成器的区别? 迭代器: 一个实现了__iter__()和__next__()方法的对象。...这是因为在循环中创建的函数具有相同的作用域。 它们使用相同的变量名称,因此,它们都引用相同的变量i,在循环末尾为10,因此为13(= 9 + 4)。 有很多方法可以得到所需的行为。

    57031

    Python高级知识点

    垃圾回收是在正在运行的程序中查找将来无法访问的数据对象,并回收那些对象所使用的资源(尤其是内存)的过程。 自动垃圾收集的语言--Java,C#,Python和大多数脚本语言。...缺点是,当垃圾收集器运行时,程序会暂停所有的线程。...垃圾收集器使用启发式方法提高速度。 例如,根据经验,最近创建的对象更有可能死掉。 因此,在创建对象时,将它们分配给不同的代,然后首先检查年轻的代。...类似地,如果对象本身是不可变的,例如tuple,则无需拷贝它。 3.3 迭代器和生成器 问:迭代器和生成器的区别? 迭代器: 一个实现了__iter__()和__next__()方法的对象。...这是因为在循环中创建的函数具有相同的作用域。 它们使用相同的变量名称,因此,它们都引用相同的变量i,在循环末尾为10,因此为13(= 9 + 4)。 有很多方法可以得到所需的行为。

    57961

    深入理解 PHP7 unset 真的会释放内存吗?

    02 首先认知 unset 真的是函数吗?...03 快速了解语言结构与函数的定义和区别 什么是语言结构? PHP 关键词; PHP 标识符; PHP 语言内置的一种语法规则; 什么是函数及包括哪些?...php $user = 'fanjiapeng'; 分配 变量名 内存空间,存入符号表 分配 变量值 内存空间 在 ZEND_RETURN 阶段,变量名与变量值关联 一个 PHP 变量由两部分组成:...ZMM 是在 php_module_startup 阶段,向系统一次性申请了一大块内存(2MB)。当有新的变量申请内存时,ZMM 直接在余下的内存池中选择合适的大小。...若 refcount 大于1,则引用计数减1,然后进入 PHP 垃圾收集器处理机制。 例3 再来看一个 unset() 大字符串变量例子: <?

    1.9K10

    你见过最垃圾的代码长什么样?

    希望有一个函数来获取字符串的大小 这个想法在我们的开发者伙伴的脑海中闪过。他没有犹豫一秒钟。并立即实施了它。 唤醒内在的孩子 虽然听起来很疯狂,但你可以使用表情符号作为变量名称。...但你应该以这种方式使用它们吗?请看下面的代码,自己决定。 到底谁在读提交 t 信息 如果你有一个同事反复使用相同的提交信息。她可能是这样做的。 如果这些变化中的任何一个 未来是不可预测的。...购买超宽屏显示器的理由 冗长的变量名并无不妥。只要它们有助于提高代码的可读性。但有时,我们必须问自己 "多长才算长?” 天才之举 这里没有什么要补充的。我认为这条注释不言自明。...确保它是真正的 Bool 多大程度的悲观才算过分悲观?我想说这个人真的很接近。 测试驱动的最佳开发方式 我们必须为使用单元测试的做法点赞。但我不禁要问。如果测试是生成随机数字,会发生什么?...没有什么了,只是要相信它。 数学是困难的 有时,使用外部帮助并不可耻。实际上存在的是--甚至是包。你敢猜它每周有多少次下载吗?它超过了 15 万次。

    39220

    python058_一句话让python崩了

    位置和数量 作用 一个放后面 避免名字冲突 两个放两边 系统变量 能把内建模块(builtins) 覆盖掉吗??...这两句话也来自于 python之禅 The Zen of Python 添加图片注释,不超过 140 字(可选) 有 明确文档 做过要求 吗?...周围 两边各有一个空格 不要超过一个空格 pep8是什么意思呢?...提高代码质量 认真、专业 的 能 看得出来 乱写的 代码 让人一看 就想要离开 拒人千里之外 为什么会有下划线这么一个标点呢?...依然可以表示强调 总结 这次玩的 还是 下划线 下划线 在变量定义的时候 代替空格 空格本身也很重要 留白 让 代码 提高可读性 添加图片注释,不超过 140 字(可选) 还有什么方式

    6910
    领券