首页
学习
活动
专区
工具
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

16010

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。

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

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

    77230

    下划线在 Python特殊含义

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

    1K10

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

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

    16620

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

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

    29820

    一个专家眼中GoJava垃圾回收算法大对比

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

    2.1K50

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

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

    3.1K21

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

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

    38210

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

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

    43820

    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算法,是什么意思呢? 从根上引用去找对象,能够被根节点引用找到对象都不是垃圾,不用回收,如果从根节点引用找不到对象都是垃圾

    33230

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

    比如,面试官一上来就狠狠问了这几个问题。 你可以介绍一下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配合使用工作流程图: ?

    89220

    Python高级知识点

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

    57761

    2020--Python语法常考知识点

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

    56731

    深入理解 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.8K10

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

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

    38420

    2019年JVM最新面试题,必须收藏

    4、Perm Space中保存什么数据?会引起OutOfMemory? Perm Space中保存加载class文件。 会引起,出现异常可以设置 -XX:PermSize 大小。...你使⽤过哪些或者你在什么场景下需要⼀个⾃ 定义类加载器?...补充:垃圾回收机制很多种,包括:分代复制垃圾回收、标记垃圾回收、增量垃圾回收等方式。标准Java进程既有栈又有堆。栈保存了原始型局部变量,堆保存了要创建对象。...这种方法会跟Java对象生命周期将堆内存划分为不同区域,在垃圾收集过程中,可能会将对象移动到不同区域: 伊甸园(Eden):这是对象最初诞生区域,并且对大多数对象来说,这里它们唯一存在过区域。...14、垃圾回收器 Serial收集器,串行收集器最古老,最稳定以及效率高收集器,可能会产生较长停顿,只使用一个线程去回收。

    62640

    JVM(2)--一文读懂垃圾回收

    刚才说了,虚拟机会自动帮助我们进行垃圾清除,那什么对象我们才可以称为垃圾对象呢?...此时对于这个没有任何变量指向对象,你觉得它还有用处? 显然,对于这种没有被变量指向对象,它是一点卵用也没有的,只能在堆随风漂流。...上面已经说了,没有变量引用这个对象时,它就是垃圾对象了,基于这个原理,我们可以这样做啊: 我们可以为这个对象设置一个计数器,初始值为0,假如有一个变量指向,那么计数器就加1,如果这个变量不在指向了,...所以,虚拟机并没有采用这种引用计数方法。 可达性分析 除了这种方法,我们还有其他方法? 答案有的,必须得有啊。这种方法就是传说中可达性分析,(我靠,听名字真的高级啊)。...(3).Parallel Scavenge收集器 parallel,并行意思。也是可以多线程进行垃圾回收处理,但是它与ParNew不同。它会严格控制垃圾回收时间执行其他代码时间之间比例。

    33230

    C++惯用法之消除垃圾收集器-资源获取即初始化方法(RAII)

    C++惯用法之消除垃圾收集器-资源获取即初始化方法(RAII) 0.导语 在C语言中,三种类型内存分配:静态、自动和动态。...静态变量嵌入在源文件中常数,因为它们已知大小并且从不改变,所以它们并不那么有趣。自动分配可以被认为堆栈分配——当一个词法块进入时分配空间,当该块退出时释放空间。它最重要特征与此直接相关。..."; return 0; } 手动去分配内存释放内存。 不幸,随着程序扩展到上述范围之外,很快就变得更加难以推理指针应该在何时何地被删除。当一个函数返回指针时,你现在拥有?...什么垃圾收集?简而言之,这是一组用于自动执行手动内存管理技术。通常作为具有手动内存管理语言(例如C和C ++)库提供,但在需要语言中更常用。最大优点程序员根本不需要考虑内存。...由于时间不确定,它会在超出该范围后某个时间被垃圾收集器清理。有趣,在Python中,用于非内存资源RAII不是惯用语言。

    89020
    领券