day03——变量、小整数池及垃圾回收机制的介绍

运行python程序的两种方式

1.交互式

    特点:敲一行代码会立即执行,马上就看得到结果

    作用:调试程序

2.脚本的方式

    把程序写进文件中保存,然后使用命令运行

运行python的三个步骤

    1.首先启动python解释器

    2.python解释器打开文本编辑器,将内容读取到内存中

    3.python解释器开始解析内容,开始识别python内容

变量

1.什么是变量?

    量:事物的状态

    变:事物的状态是可以被改变的

2.为何要用变量

    为了让计算机像人一样记录事物的状态

    并且状态是可以改变的

    变量存的状态是存放于计算机的内存中的

3.如何用变量

    先定义、后引用

    变量名在等号左边是赋值操作,只要不在等号右边都是取值操作

ps:变量的三个组成部分

    1.变量名(关联一个地址)

    2.赋值符号(把房间地址绑定给变量名)

    3.变量值(我们记忆的数据)

变量名的命名

   首先变量名的命名需要做到见名知意​ 其次有三个命名规则​ 1.变量名只能是字母、数字、下划线的组成​ 2.变量名的第一个字符不能是数字​ 3.关键字不能为变量名​ 常见关键字:['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from','global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

变量名的命名风格

    一:驼峰体​ 二:纯小写+下划线(推荐)

变量值具有两大特性

    1.id(内存编号 内存地址)​ 2.type(变量值类型)

    ps:id如果相等,值一定相等,id如果不相等,值可能相等

小整数池

    python对系统进行的优化,将常用的整数在内存中进行了保存​ 每次定义时可以不用向系统申请内存空间可以直接调用。​ 范围-5---256​ pycharm小整数池范围要更大些

垃圾回收机制GC

    引入​ 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值。当一个变量没有用时就应该将其所占的空间释放掉。

直接引用与间接引用

    当一个变量值不被直接引用与间接引用时,该变量值即为无用的,即是垃圾。​ 直接引用:例——x=10 10即为被x直接引用​ 间接引用:例——y=[x] x=10 10被x直接引用被y间接引用​ 内存空间的申请与回收非常麻烦,且稍有不慎便会引发内存溢出问题,好在python解释器提供了自动的垃圾回收机制。

    PS:内存溢出(Out Of Memory,简称OOM)是指应用 系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。

堆区与栈区

    定义变量时,变量名与变量值都需要存储,分别对应内存中两块区域:堆区与栈区​ 1.定义变量时,变量名与值内存地址的关联关系放在栈区​ 2.变量值存放于堆区(垃圾回收机制主要回收的地方)

    PS:当令x=y时,x与y会指向同一个内存地址

    垃圾回收机制GC主要运用的三个方法

1.引用计数:变量值被变量名关联的次数

    例:x=10,变量值为10,引用计数+1为1当引用计数为0时删除此变量值​ 引用计数可能会由于堆区两个变量值循环利用的情况导致引用计数不为0​ 例子:列表互相存放

2.标记/清除:当应用程序可用的内存空间被耗尽时,停止整个程序,然后进行标记/清除​ (1)标记:遍历所有的GC Roots对象(栈区中所有的内容及对象均为GC Root对象)栈区中连接的堆区中的对象均为有用的,将被标记,堆区中没有与栈区中相连的对象均为垃圾,不会被标记​ (2)清除,清除没有被标记的堆区中的对象

3.分代回收​ 由于引用计数的回收机制,每次都会遍历全部对象。十分没有效率因此引入分代回收的概念。​ 分代回收————在历经多次扫描后一直没有被回收的变量,gc机制(垃圾回收机制)就会认为,该变量是常用变量,减少对其的扫描频率。

实现方法是通过改变变量的权重实现的

    假设一个变量的值权重是0每扫描一次其权重加1,当其到一个阈值的时候,系统将会将其移动到更高一级,减少对其的扫描频率。

    当然分代回收有一定缺点:一直使用引用计数的方法的话,可以更及时的清除掉垃圾,但是毕竟这种方法缺少效率因此采用分代回收的方法

    垃圾回收机制是在清理垃圾&释放内存的大背景下,允许分代回收以极小部分垃圾不会被及时释放为代价,以此换取引用计数整体扫描频率的降低,从而提升其性能,这是一种以空间换时间的解决方案目录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352