Day05

一、垃圾回收机制详解

1、引用计数
x = 10 # 直接引用
y = x
z = x
l = ['a', 'b', x] # 间接引用
d = {'mmm': x} # 间接引用

2、标记清除:用来解决循环引用带来的内存泄露问题
循环引用=>导致内存泄露
l1=[111,]
l2=[222,]
l1.append(l2) # l1=[值111的内存地址,l2列表的内存地址]
l2.append(l1) # l2=[值222的内存地址,l1列表的内存地址]
del l1
del l2

3、分代回收:用来降低引用计数的扫描频率,提升垃圾回收的效率

二、与用户交互

1、接收用户的输入
在Python3:input会将用户输入的所有内容都存成字符串类型
age=int(age) # int只能将纯数字的字符串转成整型

在python2中:
raw_input():用法与python3的input一模一样
input(): 要求用户必须输入一个明确的数据类型,输入的是什么类型,就存成什么类型

2.字符串的格式化输出

2.1 %
值按照位置与%s一一对应,少一个不行,多一个也不行
res="my name is %s my age is %s" %('egon',"18")
以字典的形式传值,打破位置的限制
res="我的名字是 %(name)s 我的年龄是 %(age)s" %{"age":"18","name":'egon'}
%s可以接收任意类型
print('my age is %s' %18)

2.2 str.format:兼容性好

按照位置传值
res='我的名字是 {} 我的年龄是 {}'.format('egon',18)
打破位置的限制,按照key=value传值
res="我的名字是 {name} 我的年龄是 {age}".format(age=18,name='egon')

2.3 填充与格式化

先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度]
<10:左对齐,总共10个字符,不够的用号填充
print('{0:*<10}'.format('开始执行')) # 开始执行******

>10:右对齐,总共10个字符,不够的用号填充
print('{0:*>10}'.format('开始执行')) # ******开始执行

^10:居中显示,总共10个字符,不够的用号填充
print('{0:*^10}'.format('开始执行'))

2.4 精度与进制

print('{salary:.3f}'.format(salary=1232132.12351)) #精确到小数点后3位,四舍五入,结果为:1232132.124
print('{0:b}'.format(123)) # 转成二进制,结果为:1111011
print('{0:o}'.format(9)) # 转成八进制,结果为:11
print('{0:x}'.format(15)) # 转成十六进制,结果为:f
print('{0:,}'.format(99812939393931)) # 千分位格式化,结果为:99,812,939,393,931

三、运算符
1、算数运算符
print(10 + 3)
print(10 / 3) # 结果带小数
print(10 // 3) # 只保留整数部分
print(10 % 3) # 取模、取余数
print(10 ** 3) # 次方

2、比较运算符: >、>=、<、<=、==、!=
print(10 > 3)
print(10 == 10)
print(10 >= 10)
print(10 >= 3)

3、赋值运算符
3.1 =:变量的赋值
3.2 增量赋值:

3.3 链式赋值
x=10
y=x
z=y
z = y = x = 10 # 链式赋值
print(x, y, z)
print(id(x), id(y), id(z))

3.4 交叉赋值
m=10
n=20

交换值
temp=m
m=n
n=temp

m,n=n,m 交叉赋值

3.5 解压赋值
salaries=[111,222,333,444,555]
把五个月的工资取出来分别赋值给不同的变量名
mon0=salaries[0]
mon1=salaries[1]
mon2=salaries[2]
mon3=salaries[3]
mon4=salaries[4]

解压赋值
mon0,mon1,mon2,mon3,mon4=salaries
print(mon0)
print(mon1)
print(mon2)
print(mon3)
print(mon4)

mon0,mon1,mon2,mon3=salaries # 对应的变量名少一个不行
mon0,mon1,mon2,mon3,mon4,mon5=salaries # 对应的变量名多一个也不行

引入,可以帮助我们取两头的值,无法取中间的值
取前三个值
x,y,z,
=salaries=[111,222,333,444,555]
*会将没有对应关系的值存成列表然后赋值给紧跟其后的那个变量名,此处为

print(x,y,z)print(_)

取后三个值
*_,x,y,z=salaries=[111,222,333,444,555]
print(x,y,z)

x,*_,y,z=salaries=[111,222,333,444,555]
print(x,y,z)

salaries=[111,222,333,444,555]
,*middle,=salaries
print(middle)

解压字典默认解压出来的是字典的key
x,y,z=dic={'a':1,'b':2,'c':3}
print(x,y,z)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、字符串2、r/R在字符串的最前面阻止转义3.获取单个字符: 字符串[下标]下标:0 ~ 长度-1 ; -1 ~...
    Smr_T阅读 643评论 0 0
  • 一.day5作业 读程序,总结程序的功能: 1. numbers=1 for i in range(0,20): ...
    魅影_0d2e阅读 1,133评论 0 0
  • 一、if语句 代码是从上往下一次执行的import是导入一个模块/包的关键字random模块中提供很多和随机数相关...
    大漠判官1阅读 292评论 0 0
  • 读程序 i = 0, numbers = 12 = 2i = 1, numbers = 122i = 2, num...
    XXXXStone阅读 245评论 0 0
  • python中的分之结构只有if语句,没有switch num = 11print('%d是偶数' % (num)...
    大大峰阅读 214评论 0 0

友情链接更多精彩内容