python04:垃圾回收、用户交互、运算符

一、垃圾回收机制详解:

1,引用计数
    直接引用:直接将变量名跟值联系起来。
    间接引用:容器类型存的是索引值和值的内存地址,其引用为间接引用
    直接拨打电话和转分机号的区别

2,标记清除
    由于存在循环引用的可能,就会导致无法被引用的值无法清除,因为引用计数不为0.

变量名存放于内存的:栈区
    变量值存放于内存的:堆区

先扫描栈区的变量名,将与之间或直接引用的值标记为存活,其他堆区的值标记为失活。
    再清除堆区就清除那些标记失活的(扫描栈区,标记堆区)

3,分带回收:分代回收的核心思想是:在历经多次扫描的情况下,都没有被回收的变量,
    gc机制就会认为,该变量是常用变量,gc对其扫描的频率会降低。

二、与用户交互:

1,接收用户的输入:
    user_name=input(‘请输入:‘)这个变量需要绑定变量名(即username=),否则会被系统
    认为是垃圾清除了。
    特点:输入什么都会被存成字符串
    解决方案:age=int(xxx), int能且只能将纯数字的字符串转成整型。

2,字符串的格式化输出:把一段字符串里面的某些内容替换掉之后再输出,就是格式化输出
    所有版本:% (按照%s一一对应值取值,数量必须严格相等)
usname=input(‘请输入名字:‘)
usage=input(‘请输入年龄:‘)
tex={‘name‘:‘zw‘,‘age‘:18,‘hobit‘:‘play‘}

%s:
# res=‘my name is %s,and my age is %s‘ %(usname,usage)#列表内的变量的个数不能多不能少,顺序不能乱
# res= ‘my name is %(name)s,and my age is %(age)s‘ %(tex)#字典里变量的个数只能多不能少,字典不讲究顺序

.format:
# res=‘my name is {0},my age is {1},my name is {1}‘.format(usname,usage) #列表内的变量的个数不能多不能少,顺序可乱
# res=‘my name is {name},my age is {age}‘.format(name=tex[‘name‘],age=tex[‘age‘])
#.format()这相当于一个字典,该字典的定义是key=value的形式且key不需要引号,等号右边可以是任一种类型的值(可以再嵌套列表或字典,
引用采用[]索引法),大括号内的name,age相当于key。
对比:用{}代替%s,用.format()代替%()

f
# res=f‘my name is {name},my age is {age}‘
# print(res)

三、运算符

1,算术运算符:+ - * /(取小数) //(取整) %(取余) **(指数运算).......
    一般的数学运算,字符也能运算(+是拼接字符,*是复制字符,a*8即8个a)

2,比较运算符:> < >=  <=  ==(判断是否相等),!=(判断是否不等)

3,赋值运算符:
    赋值运算符:=
    增量赋值:+=2 (等于自身加2),*= ,/= ,  **=道理类似
    链式赋值:连等于,x=y=z=10(相等于x=10,y=x,z=y)
    交叉赋值:a,b=b,a,ab的值互换
    解压赋值:a,b,c,d,e=list 列表里的数据个数和做左边的变量名的数量必须相等。
         a,b,c,*_,d,e=list 代表将列表的前三个和后两个解压赋值,其他的打包给_,
        *代表中间所以值,_代表无用变量名。
        解压字典默认解压的是key

原文地址:https://www.cnblogs.com/Franciszw/p/12422480.html

时间: 2024-10-01 06:45:01

python04:垃圾回收、用户交互、运算符的相关文章

python入门之垃圾回收机制、用户交互、算术运算符

1.垃圾回收机制详解 引用计数 引用计数:记录指向对象引用的个数 x=10l=['a','b',x] # l=['a'的内存地址,'b'的内存地址,10的内存地址] 引用分为直接引用和间接引用 直接引用:变量值的内存地址直接指向变量名 x = 10 间接引用:变量值的内存地址直接指向变量名,变量名作为一个元素,存储在容器中(list/dict) x = 11y = [5,x] 标记清除:用来解决循环引用带来的内存泄露问题 标记清除就是用来清除循环引用情况下引用计数无法清除的垃圾,python解释

python垃圾回收机制、与用户交互及运算符

一 垃圾回收机制详解(了解) 1.什么是垃圾回收机制 垃圾回收机制(简称GC)是Python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间 2.为什么要用垃圾回收机制 程序运行过程中会申请大量的内存空间,而对于一些无用的内存空间如果不及时清理的话会导致内存使用殆尽(内存溢出),导致程序崩溃,因此管理内存是一件重要且繁杂的事情,而python解释器自带的垃圾回收机制把程序员从繁杂的内存管理中解放出来. 3.垃圾回收机制原理分析 Python的GC模块主要运用了“引用计数”(refe

用户登录之7天免登陆(垃圾回收机制)

//设置垃圾回收机制ini_set('session.gc_probability','1'); ini_set('session.gc_divisor','1'); Config::set('session.expire',3600*24*7); session.gc_divisor 与 session.gc_probability 合起来定义了在每个会话初始化时启动 gc(garbage collection 垃圾回收)进程的概率.此概率用 gc_probability/gc_divisor

垃圾回收机制详解、运算符和格式化输出

目录 垃圾回收机制详解.运算符和格式化输出 一.垃圾回收机制的原理 1 垃圾回收的原则 二.运算符 2.1 算术运算符 2.2 比较运算符 2.3 赋值运算符 2.4 逻辑运算符 2.5 成员运算符 2.6 身份运算符 三.格式化输出 3.1 % 占位符 3.2 str.format() 3.3 f"" 垃圾回收机制详解.运算符和格式化输出 一.垃圾回收机制的原理 当我们定义变量的时候,会申请一块内存空间用来存放变量值,然后利用赋值符号将变量名和变量值绑定在一起,接下来我们在使用变量值

Unity优化方向——优化Unity游戏中的垃圾回收

介绍 当我们的游戏运行时,它使用内存来存储数据.当不再需要该数据时,存储该数据的内存将被释放,以便可以重用.垃圾是用来存储数据但不再使用的内存的术语.垃圾回收是该内存再次可用以进行重用的进程的名称. Unity使用垃圾回收作为管理内存的一部分.如果垃圾回收发生得太频繁或者有太多工作要做,我们的游戏可能会表现不佳,这意味着垃圾回收是导致性能问题的常见原因. 在本文中,我们将了解垃圾回收如何工作的,什么时候发生垃圾回收,以及如何有效地使用内存,从而最小化垃圾回收对游戏的影响. 诊断垃圾回收的问题 垃

Java性能优化之JVM GC(垃圾回收机制)

Java的性能优化,整理出一篇文章,供以后温故知新. JVM GC(垃圾回收机制) 在学习Java GC 之前,我们需要记住一个单词:stop-the-world .它会在任何一种GC算法中发生.stop-the-world 意味着JVM因为需要执行GC而停止了应用程序的执行.当stop-the-world 发生时,除GC所需的线程外,所有的线程都进入等待状态,直到GC任务完成.GC优化很多时候就是减少stop-the-world 的发生. JVM GC回收哪个区域内的垃圾? 需要注意的是,JV

JVM那些事儿(二)——垃圾回收

这节小汪介绍一下jvm的垃圾回收机制,首先我们先提问: 1.为什么要有不同的垃圾算法 2.垃圾回收器要解决的终极目的是什么 3.小汪该如何选择自己的垃圾回收器 一.垃圾回收算法 众所周知,java堆内存的垃圾回收由java虚拟机管理,目前java有几种算法用来解决垃圾回收(以下只介绍最重要的两个算法) 1.1 复制算法 如图所示,复制算法可以说是最直观最简洁的算法了.按照复制算法的思路,内存要分为两块 Eden Survivor区域,Eden有一个,Survivor有两个. 首先,各种对象都在E

java----java垃圾回收算法

1.引用计数法(Reference Counting Collector) 1.1算法分析 引用计数是垃圾收集器中的早期策略.在这种方法中,堆中每个对象实例都有一个引用计数.当一个对象被创建时,且将该对象实例分配给一个变量,该变量计数设置为1.当任何其它变量被赋值为这个对象的引用时,计数加1(a = b,则b引用的对象实例的计数器+1),但当一个对象实例的某个引用超过了生命周期或者被设置为一个新值时,对象实例的引用计数器减1.任何引用计数器为0的对象实例可以被当作垃圾收集.当一个对象实例被垃圾收

【JVM】JVM系列之垃圾回收(二)

一.为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收.除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此.所以,垃圾回收是必须的. 二.哪些内存需要进行垃圾回收 对于虚拟机中线程私有的区域,如程序计数器.虚拟机栈.本地方法栈都不需要进行垃圾回收,因为它们是自动进行的,随着线程的消亡而消亡,不需要我们去回收,比如栈的栈帧结构,当进入一个方法时,就会产生一个栈帧,栈帧大小也可以借助类信息确定,然后栈帧入栈,执行方法体,退出方法时,栈帧出