1、Python定义
是一个免费、开源、跨平台、动态、面向对象的编程语言。
2、pycharm快捷键
移动到本行开头:home键
移动到本行末尾:end键盘
注释代码:ctrl + /
复制行:ctrl +d
选择列:鼠标左键 + alt
移动行:shift + alt + 上下箭头
智能提示:Ctrl + Space
3、注释
定义:给人看的,通常是对代码的描述信息。
单行注释:以#号开头。
多行注释:三引号开头,三引号结尾。
4、变量
定义:关联一个对象的标识符。
命名:必须是字母或下划线开头,后跟字母、数字、下划线。
不能使用关键字(蓝色),否则发生语法错误:SyntaxError: invalid syntax。
建议命名:字母小写,多个单词以下划线隔开。
class_name
赋值:创建一个变量或改变一个变量关联的数据。
语法:变量名 = 数据
变量名1 = 变量名2 = 数据
变量名1, 变量名2, = 数据1, 数据2
5、del 语句
语法: del 变量名1, 变量名2
作用:用于删除变量,同时解除与对象的关联.如果可能则释放对象。
自动化内存管理的引用计数:每个对象记录被变量绑定(引用)的数量,当为0时被销毁。
6、数据类型查看
在python中变量没有类型,但关联的对象有类型。
通过type函数可查看
7、空值对象 None
定义表示不存在的特殊对象。
作用:占位和解除与对象的关联
8、整形int
表示整数,包含正数、负数、0。
如: -5, 100, 0
字面值:
十进制:5
二进制:0b开头,后跟1或者1
八进制:0o开头,后跟0~7
十六进制:0x开头,后跟0~9,A~F,a~f
小整数对象池:CPython 中整数 -5 至 256,永远存在小整数对象池中,不会被释放并可重复使用。
9、浮点型float
表示小数,包含正数、负数,0.0
字面值:
小数:1.0 2.5
科学计数法:e/E (正负号) 指数
1.23e-2 (等同于0.0123)
1.23456e5(等同于123456.0)
10、字符串str
是用来记录文本信息(文字信息)。
字面值:双引号、单引号
11、复数complex
由实部和虚部组成的数字。
虚部是以j或J结尾。
字面值: 1j 1+1j 1-1j
12、布尔bool
用来表示真和假的类型
True 表示真(条件满足或成立),本质是1
False 表示假(条件不满足或不成立),本质是0
13、数据类型转换
转换为整形: int(数据)
转换为浮点型:float(数据)
转换为字符串:str(数据)
转换为布尔:bool(数据)
结果为False:bool(0) bool(0.0) bool(None)
混合类型自动升级:
1 + 2.14 返回的结果是 3.14
1 + 3.0 返回结果是: 4.0
14、算术运算符
+ 加法
- 减法
* 乘法
/ 除法:结果为浮点数
// 地板除:除的结果去掉小数部分
% 求余
** 幂运算
优先级从高到低: ()
**
* / % //
+ -
15、增强运算符
y += x 等同于 y = y + x
y -= x 等同于 y = y - x
y *= x 等同于 y = y * x
y /= x 等同于 y = y / x
y //= x 等同于 y = y // x
y %= x 等同于 y = y % x
y **= x 等同于 y = y ** x
16、比较运算符
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
返回布尔类型的值
比较运算的数学表示方式:0 <= x <= 100
17、逻辑运算符
与and
表示并且的关系,一假俱假。
示例:
True and True # True
True and False # False
False and True # False
False and False # False
或or
表示或者的关系,一真俱真
示例:
True or True # True
True or False # True
False or True # True
False or False # False
非 not
表示取反
例如:
not True # 返回False
not False # 返回True
18、短路运算
一但结果确定,后面的语句将不再执行
19、身份运算符
语法:
x is y
x is not y
作用:
is 用于判断两个对象是否是同一个对象,是时返回True,否则返回False。
is not 的作用与is相反
20、优先级
高到低:
算数运算符
比较运算符
快捷运算符
身份运算符
逻辑运算符
21、语句
行
物理行:程序员编写代码的行。
逻辑行:python解释器需要执行的指令。
建议一个逻辑行在一个物理行上。
如果一个物理行中使用多个逻辑行,需要使用分号;隔开。
如果逻辑行过长,可以使用隐式换行或显式换行。
隐式换行:所有括号的内容换行,称为隐式换行
括号包括: () [] {} 三种
显式换行:通过折行符 \ (反斜杠)换行,必须放在一行的末尾,目的是告诉解释器,下一行也是本行的语句。
pass 语句
通常用来填充语法空白。
22、If elif else 语句
作用:
让程序根据条件选择性的执行语句。
语法:
if 条件1:
语句块1
elif 条件2:
语句块2
else:
语句块3
说明:
elif 子句可以有0个或多个。
else 子句可以有0个或1个,且只能放在if语句的最后。
23、if 语句的真值表达式
if 100:
print("真值")
等同于
if bool(100):
print("真值")
24、条件表达式
语法:变量 = 结果1 if 条件 else 结果2
作用:根据条件(True/False) 来决定返回结果1还是结果2。
25、循环语句
while语句
作用:
可以让一段代码满足条件,重复执行。
语法:
while 条件:
满足条件执行的语句
else:
不满足条件执行的语句
说明:
else子句可以省略。
在循环体内用break终止循环时,else子句不执行。
26、for 语句
作用:用来遍历可迭代对象的数据元素。
可迭代对象是指能依次获取数据元素的对象,例如:容器类型
语法:
for 变量列表 in 可迭代对象:
语句块1
else:
语句块2
说明:
else子句可以省略。
在循环体内用break终止循环时,else子句不执行。
27、range 函数
作用:用来创建一个生成一系列整数的可迭代对象(也叫整数序列生成器)。
语法:
range(开始点,结束点,间隔)
说明:
函数返回的可迭代对象可以用for取出其中的元素
返回的数字不包含结束点
开始点默认为0
间隔默认值为1
28、break 语句
跳出循环体,后面的代码不再执行
可以让while语句的else部分不执行
29、continue 语句
跳过本次,继续下次循环
30、循环选择的准则
次数未知选择while循环
次数已知选择for循环
31、数学运算符
+:用于拼接两个容器
+=:用原容器与右侧容器拼接,并重新绑定变量
*:重复生成容器元素
*=:用原容器生成重复元素, 并重新绑定变量
< <= > >= == !=:依次比较两个容器中元素,一但不同则返回比较结果。
32、成员运算符
语法:
数据 in 序列
数据 not in 序列
作用:
如果在指定的序列中找到值,返回bool类型。
33、索引index
作用:访问容器元素
语法:容器[整数]
说明:
正向索引从0开始,第二个索引为1,最后一个为len(s)-1。
反向索引从-1开始,-1代表最后一个,-2代表倒数第二个,以此类推,第一个是-len(s)。
34、切片slice
作用:
从容器中取出相应的元素重新组成一个容器。
语法:
容器[(开始索引):(结束索引)(:(步长))]
说明:
小括号()括起的部分代表可省略
结束索引不包含该位置元素
步长是切片每次获取完当前元素后移动的偏移量
35、内建函数
len(x) 返回序列的长度
max(x) 返回序列的最大值元素
min(x) 返回序列的最小值元素
sum(x) 返回序列中所有元素的和(元素必须是数值类型)
36、字符串 str
定义
由一系列字符组成的不可变序列容器,存储的是字符的编码值。
编码
- 字节byte:计算机最小存储单位,等于8 位bit.
- 字符:单个的数字,文字与符号。
- 字符集(码表):存储字符与二进制序列的对应关系。
- 编码:将字符转换为对应的二进制序列的过程。
- 解码:将二进制序列转换为对应的字符的过程。
- 编码方式:
--ASCII编码:包含英文、数字等字符,每个字符1个字节。
--GBK编码:兼容ASCII编码,包含21003个中文;英文1个字节,汉字2个字节。
--Unicode字符集:国际统一编码,旧字符集每个字符2字节,新字符集4字节。
-- UTF-8编码:Unicode的存储与传输方式,英文1字节,中文3字节。
相关函数
ord(字符串):返回该字符串的Unicode码。
chr(整数):返回该整数对应的字符串。
字面值
单引和双引号的区别
- 单引号内的双引号不算结束符
- 双引号内的单引号不算结束符
三引号作用
- 换行会自动转换为换行符\n
- 三引号内可以包含单引号和双引号
- 作为文档字符串
转义字符
改变字符的原始含义。
\’ \” \””” \n \\ \t \0 空字符
- 原始字符串:取消转义。
a = r”C:\newfile\test.py”
字符串格式化
定义:生成一定格式的字符串。
语法:字符串%(变量)
"我的名字是%s,年龄是%s" % (name, age)
类型码:
%s 字符串 %d整数 %f 浮点数
37、列表 list
定义
由一系列变量组成的可变序列容器。
基础操作
- 创建列表:
列表名 = []
列表名 = list(可迭代对象)
- 添加元素:
列表名.append(元素)
列表.insert(索引,元素)
- 定位元素:
索引、切片
- 遍历列表:
正向:
for 变量名 in 列表名:
变量名就是元素
反向:
for 索引名 in range(len(列表名)-1,-1,-1):
列表名[索引名]就是元素
- 删除元素:
列表名.remove(元素)
del 列表名[索引或切片]
38、深拷贝和浅拷贝
浅拷贝:复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程。
深拷贝:复制整个依懒的变量。
39、列表对比字符串
列表和字符串都是序列,元素之间有先后顺序关系。
字符串是不可变的序列,列表是可变的序列。
字符串中每个元素只能存储字符,而列表可以存储任意类型。
列表和字符串都是可迭代对象。
函数:
将多个字符串拼接为一个。
result = "连接符".join(列表)
将一个字符串拆分为多个。
列表 = “a-b-c-d”.split(“分隔符”)
40、列表推导式
定义:
使用简易方法,将可迭代对象转换为列表。
语法:
变量 = [表达式 for 变量 in 可迭代对象]
变量 = [表达式 for 变量 in 可迭代对象 if 条件]
说明:
如果if真值表达式的布尔值为False,则可迭代对象生成的数据将被丢弃。
41、列表推导式嵌套
语法:
变量 = [表达式 for 变量1 in 可迭代对象1 for 变量2 in可迭代对象2]
传统写法:
result = []
for r in ["a", "b", "c"]:
for c in ["A", "B", "C"]:
result.append(r + c)
推导式写法:
result = [r + c for r in list01 for c in list02]
42、元组 tuple
定义
由一系列变量组成的不可变序列容器
不可变是指一但创建,不可以再添加/删除/修改元素。
基础操作
- 创建空元组:
元组名 = ()
元组名 = tuple()
- 创建非空元组:
元组名 = (20,)
元组名 = (1, 2, 3)
元组名 = 100,200,300
元组名 = tuple(可迭代对象)
- 获取元素:
索引、切片
- 遍历元组:
正向:
for 变量名 in 元组名:
变量名就是元素
反向:
for 索引名 in range(len(元组名)-1,-1,-1):
元祖名[索引名]就是元素
作用
元组与列表都可以存储一系列变量,由于列表会预留内存空间,所以可以增加元素。
元组会按需分配内存,所以如果变量数量固定,建议使用元组,因为占用空间更小。
应用:
变量交换的本质就是创建元组:x, y = y, x
格式化字符串的本质就是创建元祖:"姓名:%s, 年龄:%d" % ("demaxiya", 15)
43、字典 dict
定义
由一系列键值对组成的可变散列容器。
散列:对键进行哈希运算,确定在内存中的存储位置,每条数据存储无先后顺序。
键必须惟一且不可变(字符串/数字/元组),值没有限制。
基础操作
- 创建字典:
字典名 = {键1:值1,键2:值2}
字典名 = dict (可迭代对象)
- 添加/修改元素:
语法:
字典名[键] = 数据
说明:
键不存在,创建记录。
键存在,修改映射关系。
- 获取元素:
变量 = 字典名[键] # 没有键则错误
- 遍历字典:
for 键名 in 字典名:
字典名[键名]
for 键名,值名 in 字典名.items():
语句
- 删除元素:
del 字典名[键]
44、字典推导式
定义:
使用简易方法,将可迭代对象转换为字典
语法:
{键:值 for 变量 in 可迭代对象}
{键:值 for 变量 in 可迭代对象 if 条件}
45、字典 对比列表
都是可变容器。
获取元素方式不同,列表用索引,字典用键。
字典的插入,删除,修改的速度快于列表。
列表的存储是有序的,字典的存储是无序的。
46、集合 set
定义
由一系列不重复的不可变类型变量组成的可变散列容器。
相当于只有键没有值的字典(键则是集合的数据)。
基础操作
- 创建空集合:
集合名 = set()
集合名 = set(可迭代对象)
- 创建具有默认值集合:
集合名 = {1, 2, 3}
集合名 = set(可迭代对象)
- 添加元素:
集合名.add(元素)
- 删除元素:
集合名.discard(元素)
47、运算
- 交集&:返回共同元素。
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 & s2 # {2, 3}
- 并集:返回不重复元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 | s2 # {1, 2, 3, 4}
- 补集-:返回只属于其中之一的元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 - s2 # {1} 属于s1但不属于s2
- 补集^:返回不同的的元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 ^ s2 # {1, 4} 等同于(s1-s2 | s2-s1)
- 子集<:判断一个集合的所有元素是否完全在另一个集合中
- 超集>:判断一个集合是否具有另一个集合的所有元素
s1 = {1, 2, 3}
s2 = {2, 3}
s2 < s1 # True
s1 > s2 # True
- 相同或不同== !=:判断集合中的所有元素是否和另一个集合相同。
s1 = {1, 2, 3}
s2 = {3, 2, 1}
s1 == s2 # True
s1 != s2 # False
子集或相同,超集或相同 <= >=
48、集合推导式
- 定义:
使用简易方法,将可迭代对象转换为集合。
- 语法:
{表达式 for 变量 in 可迭代对象}
{表达式 for 变量 in 可迭代对象 if 条件}
49、固定集合 frozenset
定义
不可变的集合
作用
固定集合可以作为字典的键,还可以作为集合的值。
基础操作
创建固定集合:frozenset(可迭代对象)
运算
等同于set