Python循环引用之内存泄漏
9liuying 发布于 2023-04-28
上一章我们讲过,不管是直接引用还是间接引用,只要引用计数为0的时候,就会被垃圾回收机制回收,但是这种工作方式是有问题的。 举个例子,我现在定义两个列表,l1和l2。 然后使用append()功能,l1.append。这个方法我们后面会讲,现在可以先了解一下。它的作用就是给l1这个...
阅读(285)赞 (0)
liuying 发布于 2023-04-28
上一章我们讲过,不管是直接引用还是间接引用,只要引用计数为0的时候,就会被垃圾回收机制回收,但是这种工作方式是有问题的。 举个例子,我现在定义两个列表,l1和l2。 然后使用append()功能,l1.append。这个方法我们后面会讲,现在可以先了解一下。它的作用就是给l1这个...
阅读(285)赞 (0)
liuying 发布于 2023-04-28
前面我们说过,a=100,然后可以直接把a的内存地址,直接给b,再直接给c,这三个变量都是对100的直接引用,我们画个图看看。它们都指向了内存地址100。 而列表,我们上一章讲过是间接引用,我们看看列表,l=[‘a’,’b’,...
阅读(296)赞 (0)
liuying 发布于 2023-04-28
前面我们讲变量的时候说过,Python在执行自定义代码的时候,会申请内存空间,然后把值存进去,再把内存地址绑定给变量名。 现在我定义一个变量名,name=‘于谦’。变量定义完了之后是为了以后能用,而变量的引用方式又有两种,一种方式就是直接引用,就是直接通过变量名引用对应值。另一种...
阅读(320)赞 (0)
liuying 发布于 2023-04-27
接下来咱们要学的最后一个基本数据类型,叫卜尔类型。布尔类型比较简单,它就是用来记录真和假,这两种状态的。 其实之前也接触过,前面我们判断一个人的年龄是不是大于18岁,如果大于18岁,那就是真,如果不是大于18岁那就是假。 定义的方式也很简单,布尔值总共就两个值,真和假,True和...
阅读(253)赞 (0)
liuying 发布于 2023-04-27
前面我们讲了,列表可以用来存多个值,用列表嵌套可以存同一类事务的多种状态。现在我有一个需求,你帮我存一下于谦的名字、年龄、身高、体重、薪资、三围。然后咱们的第一反应是用列表来存。 但是现在有个问题,虽然我们需求是完成了,但是你来看,这个列表里面有很多的数据对吧,假设这个数据不止现...
阅读(252)赞 (0)
liuying 发布于 2023-04-27
前面我们说过,不管是字符串类型、整型、还是浮点型他们存的变量值都是一个值对吧。 name=‘于谦’,这是一个值、age=45,这也是一个值、price=3.5,这还是一个值。这几个变量都只能存一个值。那我要存多个值怎么办。 比如我先再有个需求,于谦这个人众所周知有三大爱好,分别是...
阅读(250)赞 (0)
liuying 发布于 2023-04-27
现在我们来看第二种基本数据类型,字符串类型str。 字符串如果听不懂的话,大家都吃过羊肉串吧,想象一下一串羊腰子,一个个腰子被穿成一串,字符串就是一串字符吗,一个个字符被串成一串。 字符就是人类的文字字母符号,比如英文字符、中文字符等等,字符的作用就是用来记录事物的描述性状态的。...
阅读(280)赞 (0)
liuying 发布于 2023-04-27
前面我们说过,变量值是用来记录事务状态的,而事务的状态是多种多样的,所以变量值也要有不同类型,一种类型就对应一种事务的状态。 接下来就要介绍基本数据类型了,首先我们来看数字类型。在Python当中是没有一个类型叫数字类型的,这是因为数字类型分为了两种,一种叫整型int,另一种叫浮...
阅读(254)赞 (0)
liuying 发布于 2023-04-25
前面我们说了,变量就是变化的量。 而现在我们讲的常量就是不变的量。但是在Python语法中没有常量的概念,但是我们程序开发过程中会涉及到常量概念。 大家都知道圆周率π吧,3.1415926,这是不是就是不变的量。你不能说经过我程序的运算,然后过了一会儿,圆周率变量吧。 所以写程序...
阅读(235)赞 (0)
liuying 发布于 2023-04-25
前面我们说了,只要是赋值操作,产生新的值的时候,都会申请一块内存空间。只要申请了新的内存空间,他的内存地址就会不一样,id也会不一样。 现在我定义a=10,b=10,按照我们前面分析的,这两串代码一运行,肯定申请两块内存空间把值丢进去然后分别绑定给这两个变量a和b。所以它们的id...
阅读(262)赞 (0)
liuying 发布于 2023-04-25
这节课我们讲一下is与==的区别。 is叫做身份运算,是用来比较左右两个值的身份是否相等,上节课我们讲了变量值的身份证号,也就是id号。所以is就是用来比较两个变量值的id号是否相等的。 这里注意了,一个等号=是赋值,两个等号==是比较左右变量的值是否相等。 举个例子,我们a=‘...
阅读(244)赞 (0)
liuying 发布于 2023-04-24
现在我们来学习一下,变量的两个重要特征分别是id和类型type。 这个id反应的是根据变量值的内存地址,所计算一个id号码。这里注意了,id不是内存地址,他是通过变量值的内存地址计算出来的,类似于它的身份证号码。你就理解成它是内存地址的映射就可以了,变量值的内存地址不一样id就会...
阅读(383)赞 (0)
liuying 发布于 2023-04-24
现在我们来看一下变量的三大组成部分。 首先的就是变量名,它指向的就是等号右侧的值的内存地址,是用来访问右侧的值的。然后就是赋值符号‘=’等号,它是用来将变量值的内存地址绑定给变量名的。最后就是变量值,它是表示用来记录事物的状态的。 先来看变量名的命名原则,前面我们说了,给变量命名...
阅读(281)赞 (0)
liuying 发布于 2023-04-24
上节课我们说了,定义变量其实就是在内存里开辟了一个内存空间,然后把内存空间的一个地址捆绑给了一个变量名,通过这个变量名我们就可以找到这个对应的值在哪。现在我们要知道,定义变量首要占用内存空间的,但内存空间大小是有限的。 这时候就是涉及到一个问题,你申请了内存空间要用没关系,但是如...
阅读(255)赞 (0)
liuying 发布于 2023-04-20
我们下载软件的时候,大多数都会让我们选择X86-64位或者X86-32位,这到底是什么意思呢? 现在我就来详细讲解X86-64位或者X86-32位代表的含义。 Inter出厂的第一款CPU的型号叫8086,后来又出现了80285、80386等一系列型号。后来大家就把这种型号或者说...
阅读(439)赞 (0)
liuying 发布于 2023-04-20
前面我们说了,我们的应用程序运行是想要控制计算机的硬件。但是控制计算机硬件这件事,是交给计算机的操作系统,让操作系统帮我们去实现的。 现在我可以简单的说,一台运行有操作系统的计算机硬件,就可以称为一个平台。比如 系统+一台华硕的计算机,可以称之为一个平台。Linux系统+一台联想...
阅读(245)赞 (0)
liuying 发布于 2023-04-20
之前我们学习了计算机三大核心硬件,那有的小伙伴会问了:“计算机的操作系统到底是个啥?” 假设我现在要开发一款程序,名字叫快播,这是一款播放小视频的软件。既然说到播放视频必然涉及到从硬盘里面读取视频数据。现在我们要明白一件事,计算机硬件说到底就是一堆破铜烂铁,它本身是不可能自己就能...
阅读(250)赞 (0)
liuying 发布于 2023-04-19
前面我们说了,计算机是基于点工作的,它能直接理解的就是高低电频所对应的0101这种二进制指令。而直接用二进制编程的这种方式就是机器语言。 这种编程方式执行效率是最高的,因为计算机可以无障碍理解。但是它的复杂度极高,开发效率极低,你可能要写一大堆0101这种二进制数,才能实现一个非...
阅读(259)赞 (0)
liuying 发布于 2023-04-19
上一章我们讲到了计算机的组成,这一章我们详细讲解计算机的三大核心硬件。 之前我们说过,编程就是人把自己想让计算机做的事情用编程语言表达出来。我现在是个程序员,你是我的计算机,我现在要写一段程序去奴役你,让你帮我做事。假如我现在写个程序,让你去帮我买包子。 我的程序第一步:去包子店...
阅读(337)赞 (0)
liuying 发布于 2023-04-19
计算机俗称‘电脑’,这也包含了人类对计算机的终极期望,就是通电以后,能够像人脑一样去工作。 所以计算机在设计的时候,它的组成就是模仿人类的功能去设计的,分别是控制器、运算器、存储器、输入设备(input)I设备、输出设备(output)O设备。 控制器是计算机的指挥系统,对应的就...
阅读(362)赞 (0)