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

Posted franciszw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于python04:垃圾回收用户交互运算符的主要内容,如果未能解决你的问题,请参考以下文章

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

Python之垃圾回收机制与用户交互

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

04-3 python语法入门之垃圾回收机制

垃圾回收

Python引用复制,参数传递,弱引用与垃圾回收