链式赋值
- 同一个对象,赋值给多个变量,对象的地址都是一样的
#系列解包赋值(个数必须一致)
a,b,c=4,5,6
相当于a=4,b=5,c=6
使用系列解包赋值实现变量变换
a,b=1,2
a,b=b,a,实现了a和b的互换(和c语言不一样)
常量
python不支持常量
最基本的内置数据类型介绍
- 整型:整数
- 浮点型:小数
- 布尔型:表示真假,只有true和false
运算
/:浮点数除法(小数)
//:整数除法:取整数
%:模:取余
:幂运算。23=8
divmod()函数:同时得到商和余数。divmod(13,3),输出(4,1),返回的是一个元组
使用int()实现类型转换
- 浮点数直接舍去小数部分。如:int(9.9)结果是:9。
- 布尔值True 转为1,False 转为0。如:int(True)结果是1。
自动转型
整数和浮点数混合运算时,表达式结果自动转型成浮点数。
注意:Google=10**100.
浮点数(float)
浮点数,称为float。
浮点数用
a*b的10 次方形式的科学计数法表示。比如:3.14,表示成:314E-2 或者314e-2。
这些数字在内存中也是按照科学计数法存储。
类型转换和四舍五入
使用float()将其他类型转化成浮点数。
round(value)可以返回四舍五入的值,不会改变原有值,而是产生新的值。
增强型赋值运算符
+=,-=,等,中间不能加空格
时间的表示
unix时间点:1970年1月1日00:00:00开始计时,以毫秒进行计算。
python中可以通过time.time(),获取当前时刻,带微秒精度的浮点数。
布尔值
python3中,把True 和False 定义成了关键字,但他们的本质还是1 和0,甚至可以和数字相加。
比较运算符
逻辑运算符(重要)
or:x or y,x为true,不计算y直接返回true,x为false,返回y。
and:x and y,x为true,返回y的值;x为false,则不计算y,直接返回false
not:not x,x为true,返回false;x为false,返回true。
同一运算符
is,is not
一个对象有什么:id,type,value。同一运算符用于比较两个对象的存储单元,之际上比较的是地址,是不是同一个
【注意】is用于判断两个变量引用的对象,是否是同一个,即比较对象的地址。==用于判断引用变量引用的值是否相等。
重点
a和b的值是相等的,但是a is b返回false,因为这两个对象色的地址是不同的,值相同。
整数缓存问题
Python 仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对象。
需要注意的是,这仅仅是在命令行中执行,而在Pycharm 或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5,任意正整数]),这个时候,上边false就会变成true。
字符串
基本特点
本质:字符序列。Python 不支持单字符类型,单字符也是作为一个字符串使用的。
字符串的编码
Python3 直接支持Unicode,可以表示世界上任何书面语言的字符。Python3 的字符
默认就是16 位(2的16次方)Unicode 编码,ASCII 码是Unicode 编码的子集。
内置函数:
ord(‘A‘):65。字符转为编码
chr(66):’B‘。编码转为字符。
引号创建字符串
- 通过单引号和双引号创建字符串,使用没有区别。唯一注意:如果这一个字符串里面有单引号,外面就要用双引号括起来;里面是双引号,外面就用单引号括起来。
- 连续三个单引号或三个双引号,可以创建多行字符串。
空字符串
ython 允许空字符串的存在,不包含任何字符且长度为0。空格也算是一个字符。
转义字符
字符串拼接
用+拼接
字符串复制
a=‘sxt’*3
不换行打印
print(’xer’,end=’。’)
从控制台读取字符
myname=input(‘输入’)
str()实现数字转型字符串
str()
使用[ ]提起字符串
a[i]
正向搜索:从0开始,左到右
反向搜索:从-1开始,右到左
replace ()实现字符串变化
a=a.replace(‘被替换的字符’,‘替换的字符’)
【注意】python中字符是不可以替代的,这里的操作是生成了新的对象,再把新对象的id赋值给a
字符串切片slice操作
也就是截取字符串
[起始偏移量start:终止偏移量end:步长step]
注意:包头不包尾,一般不包含最后一个字符。
split()分割和join()合并
- split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。
不指定:a.split()
指定:a.split(‘to’):以to为分隔符,进行分割 - join一般和列表一起使用
- a=[‘ac’,‘vv’,‘cd’]
”连接符”.join(a),如果”连接符“里面为空,就直接拼起来。
import time
time01=time.time()#起始时刻
a=""
for i in range(1000):
a += "sxt"
print(a)
time02=time.time()#终止时刻
print("运算时间:"+str(time02-time01))
time03=time.time()
li=[]#列表是可变的,直接在后面加上要拼接的字符就可以了,但是+=是生成新的对象,每次都生成一次
for i in range(100000):#注意:不要忘记for循环要以冒号结束
li.append("sxt")
a="".join(a)
time04=time.time()
print("运算时间:"+str(time04-time03))
字符串驻留机制和字符串比较
**字符串驻留:**仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。Python 支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线(_)、字母和数字,三种都必须包含)会启用字符串驻留机制驻留机制。
成员操作符
in /not in 关键字,判断某个字符(子字符串)是否存在于字符串中。
in/not in
a=“abcdefg”
“b” in a
返回true
字符串常用方法汇总
注意:空白符常用的有制表符,换行符,空格
字符串的格式化
format函数
使用{ }作为占位符。
【注意】占位符里面的变量定义,要按照变量名的规则定义,不能随便定义数字。
a="名字是:{0},年龄是:{1}"
a.format("学生",18)
out:'名字是:学生,年龄是:18'
填充和对齐
"我是{name},喜欢{num:#<8}".format(name="高",num=99)
#out:'我是高,喜欢99######'
【注意】要严格按照格式赋值。
数字格式化
a="我是{name},我有存款{num:*^8.2f}"
c=a.format(name="小明",num=100.233)
#out:'我是小明,我有存款*100.23*'