链式赋值
同一个对象赋值给多个变量
x=y=123
系列解包赋值
a,b,c = 4,5,6
a = 10 b = 20 a,b = b,a
python不支持常量
只能通过逻辑上来控制常量
内置数据类型
每个对象都有类型,最基本的数据类型
(1)整型
(2)浮点型
(3)布尔型
(4)字符串型
数字
+ - *
/ 浮点数除法 8/2=4.0
// 整数除法 7//2 = 3
% 模(取余) 7%4 = 3
** 幂
divmond() 同时得到商和余数,返回的是一个元组
整数
0B 二进制
0O 八进制
0X 十六进制
进行位运算
使用init()实现类型转换:
(1)浮点数直接舍去小数部分
(2)布尔值True转为1 False转为0
(3)字符串符合整数格式直接转成对应整数,否则报错 init("12312") 可以转换 init("12qrq")报错
自动转型:整数和浮点数混合运算时,表达式结果自动转型成浮点数
整数可以有多大 int可以存储任意大小的整数 long被取消 python可以做超大数的计算,不会造成“整数溢出”
浮点数
float 在内存中以科学计数法来存储
类型转换和四舍五入
(1)类似于int(), 可以使用float()讲其他类型转换成浮点数
(2)自动转型
(3)round(value)可以返回四舍五入的值,产生新的值,不会改变原有值
增强型赋值运算符
运算符和赋值符结合构成 a += 1
布尔值
布尔值True False 本质还是1和0 可以和数字相加
时间的表示
从1970年1月1日00:00:00开始,以毫秒(1/1000)进行计算 unix时间点
python中通过time.time()获得当前时刻 import time
练习:定义多点坐标,绘出这点,并计算起始点和终点距离
import turtle
import math
#定义坐标
x1,y1 = 100, 100
x2, y2 = 100, -100
x3, y3 = -100, -100
x4, y4 = -100,100
#绘制折线
turtle.penup()
turtle.goto(x1,y1)
turtle.pendown()
turtle.goto(x2,y2)
turtle.goto(x3,y3)
turtle.goto(x4,y4)
distance = math.sqrt((x1-x4)**2 + (y1-y4)**2)
turtle.write(distance)
比较运算符
== != > < <= >=
逻辑运算符
or and not
同一运算符
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址
is 判断两个标识符是不是引用同一个对象
is not 判断两个标识符是不是引用不同对象
is 用于判断两个变量引用对象是否为同一个,即比较对象的地址。
==用于判断引用变量引用对象的值是否相等,默认调用对象的__eq()方法
整数缓存问题,python仅仅对比较小的整数对象进行缓存,[-5,256]
在命令行中:c = 10 d=10 c is d输出结果为True 如果是1000则为false
在pycharm或者保存为文件执行,结果是不一样的,解释器做了优化缓存范围为[-5,任意正整数]
is运算符比==效率高,在变量和None进行比较适合,应该使用is
字符串
字符串的本质是字符序列,python的字符串是不可变的,我们无法对源字符串做任何修改,但可以将字符串的一部分赋值到新创建的字符串,达到”看起来修改“的效果
python不支持单字符类型,单字符也是作为一个字符串使用的
字符串的编码
unicode python直接支持,国际通用unicode 可以表示世界上任何书面语言字符,
python3字符默认是16位unicode编码,ASCII码是unicode编码的子集
使用内置函数ord()可以吧字符转换成对应的unicode码
chr() 把十进制数字转换成对应的字符
三种创建字符串的方式
引号创建字符串 通过单引号或双引号
连续三个单引号或连续三个双引号可以帮助我们创建多行字符串
空字符串
长度为0
len() 计算字符串含有多少个字符
转义字符
\ +特殊字符 实现某些难以用字符标识的效果,比如换行
\(在行尾时) 续航符
\\ 反斜杠符号
\ * \"
\b 退格
\n 换行
\t 横向制表符
\r 回车
字符串拼接
(1)使用加号 加号两边类型不同抛出异常
(2)可以将多个字面字符串直接放到一起实现拼接
b = 'abc''yfz' print(b) : 'abcyfz'
拼接形成一个新的对象
字符串复制
使用乘号
不换行打印
print中可以通过参数end = ”任意字符串“ 来指定末尾 默认是用换行符结尾
从控制台读取字符串
input() 从控制台读取键盘数据的内容
str()函数实现数字转型字符串
调用print()时,解释器自动调用str()将非字符串的类型转为字符串
使用[]提取字符
字符串本质是字符序列,字符串后面添加[],在[]里面指定偏移量可以提取该位置的单个字符
正向搜索还可以反向搜索 从最右侧搜索偏移量是-1,直到-len()为止
replace() 实现字符串替换
字符串是不可改变的,可以是用replace(‘c’,'替换后')替换某些字符 ,返回一个新的字符串,源字符串不变
字符串切片slice操作
快速提取子字符串 [其实偏移量:终止字符串:步长]
分割和合并
split()split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。
使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。推荐使用 join 函数,因为 join 函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝, 仅新建一次对象。
故使用join()函数拼接字符串效率更高
字符串驻留
仅保存一份相同切不可变字符串的方法,仅包含下划线、字母和数字的符合标识符规则,会启用字符串驻留机制。
字符串比较
直接使用== !=比较字符串
is/not is 判断两个对象是否是同一个对象,比较的是对象的地址,即比较id(obj1)和id(obj2)是否相等。
去除首尾信息
通过strip()去除字符串首尾的制定信息,
通过 lstrip()去除字符串左边指定信息,
rstrip()去除字符串右边指定信息。
格式排版
center()、ljust()、rjust()这三个函数用于对字符串实现排版
字符串的格式化
format() 通过{}和: 来代替%
可以接受不限个参数,{}相当于一个占位符的角色, 调用format函数时填充新的字符值
可以通过{索引}/{参数名} 直接映射参数值,实现对字符串的格式化
填充与对齐
^ < > 居中 左对齐、右对齐,后面带宽度
:冒号后面带填充的字符,只能是一个字符,不指定的话默认空格填充
数字格式化
浮点数通过f,整数通过d进行需要的格式化
用法需要的时候再查表