码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-03-05 20:56:11      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:==   引号   方案   循环   算术运算   需要   嵌套   无法   字典   

一、垃圾回收机制详解:

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:垃圾回收、用户交互、运算符

标签:==   引号   方案   循环   算术运算   需要   嵌套   无法   字典   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!