Python
- 1、 基础
- 1.1、基本数据类型
- 1.2、运算符
- 1.3、字符串基础
- 1.4、字符串扩展
- 1.5、函数
- 1.6、列表
- 1.7、元组
- 1.8、字符串
- 1.9、集合
- 1.10、字典
- 1.11、数据容器小结
- 1.12、bytes 类型
- 2、 入门
- 2.1、文件操作
- 2.2、异常处理
- 2.3、模块和包
- 2.4、面向对象
- 2.5、类型注释
- 3、中级
- 3.1、MySQL
- 3.2、闭包
- 3.3、上下文管理器
- 3.4、浅拷贝和深拷贝
- 3.5、eval 函数
- 3.6、多线程
- 3.7、Socket
- 3.8、正则表达式
1、 基础
1.1、基本数据类型
类型 | 描述 |
---|---|
Number | 整形、浮点数、复数、布尔值 |
String | 字符串 |
List | 有序的可变列表 |
Tuple | 有序的不可变列表 |
Set | 无序的不重复集合 |
Dictionary | 无序的键值对 |
TIP
1、查看变量 a 的类型:type(a) —— type不会认为子类是一种父类类型
2、判断变量 a 的类型:isinstance(a,类型) —— isinstance会认为子类是一种父类类型
3、判断 a 是否是 b 的类型:issubclass(a,b)
4、在内存中清除变量所占控件:del 变量1,变量2
类型转换 | 描述 |
---|---|
int(xxx) | 转换为整数 |
float(xxx) | 转换为浮点数 |
str(xxx) | 转换为字符串 |
frozenset(xxx) | 转化为不可变集合 |
chr(xxx) | 将一个整数转化为一个字符 |
ord(xxx) | 将一个字符转化为一个整数 |
hex(xxx) | 将一个整数转化为一个十六进制,类型是字符串 |
oct(xxx) | 将一个整数转化为一个八进制,类型是字符串 |
1.2、运算符
运算符 | 描述 |
---|---|
+、-、*、/ | 加减乘除 |
+=、-=、*=、/= | 加减乘除赋值运算符 |
// | 取整 |
//= | 取整赋值运算符 |
% | 取余 |
%= | 取余赋值运算符 |
** | 幂运算 |
**= | 幂运算赋值运算符 |
:= | 海象运算符,在表达式内部进行赋值 |
# 不使用海象运算符
values = [1, 2, 3, 4, 5]
i = 0
value = values[i]
while value < 4:print(value)i += 1if i < len(values):value = values[i]# 使用海象运算符
values = [1, 2, 3, 4, 5]
i = 0
while (value := values[i]) < 4:print(value)i += 1
1.3、字符串基础
① 引号输出
name = 'my name is "niki"'
print(name) # my name is "niki"name = "my name is 'niki'"
print(name) # my name is 'niki'name = 'my name is \'niki\''
print(name) # my name is 'niki'
② 多行语句
str1 = 'my' + \'name is' + \'niki'
print(str1)
③ 让 \ 不发生转义
str1 = r'this is a line with \n'
print(str1)
④ 运算
str1 = 'a'
str2 = 'b'
print(str1+str2) # 连接
print(str1*3) # 打印三次
其他数据容器也可以进行同样的 +、* 运算
⑤ 字符串的常用操作
大小写转换 | 描述 |
---|---|
str.upper() | 转大写 |
str.lower() | 转小写 |
str.capitalize() | 将字符串的第一个字符转为大写,其余的转为小写 |
str.title() | 将字符串每个单词的首字母转为大写 |
str.swapcase() | 将字符串中大小写互换 |
查找与替换 | 描述 |
---|---|
str.find(str) | 返回子串的索引,找不到返回 -1 |
str.index(str) | 类似于 find ,但是找不到会抛出异常 |
str.replace(old,new) | 将子串进行替换 |
str.count(sub) | 计算子串出现的次数 |
拆分与拼接 | 描述 |
---|---|
str.split(sep) | 将字符串按照 sep 进行分割,返回一个列表 |
str.splitlines() | 按行拆分字符串,返回一个列表 |
str.join(iterable) | 使用字符串作为分隔符,将 iterable 中的元素连接成一个字符串 |
s = "hello world"
print(s.split(" ")) # ['hello', 'world']
print("-".join(["hello", "world"])) # "hello-world"
去除空白字符 | 描述 |
---|---|
str.strip() | 去除字符串两端的空白字符 |
str.lstrip() | 去除字符串左边的空白字符 |
str.rstrip() | 去除字符串右边的空白字符 |
判断字符串的内容 | 描述 |
---|---|
str.isalpha() | 检查字符串是否只包含字符且非空 |
str.isdigit() | 检查字符串是否只包含数字且非空 |
str.isalnum() | 检查字符串是否只包含字母和数字且非空 |
str.isspace() | 检查字符串是否只包含空白字符 |
str.startswwith(prefix) | 检查字符串是否以指定前缀开头 |
str.endswitch(suffix) | 检查字符串是否以指定前缀结尾 |
其他 | 描述 |
---|---|
str.center(width) | 将字符串居中,两边用空格填充 |
str.zfill(width) | 前填充0 |
str.partition(sep) | 将字符串按 sep 进行分割,分割为‘前’、‘中’、‘后’,seq 处于‘中’ |
1.4、字符串扩展
① 格式化法1
格式符号 | 描述 |
---|---|
%s | 字符串占位符 |
%d | 整数占位符 %5d表示整数的宽度是5,不足5位时用空格补 |
%f | 浮点数占位符 %.2f表示精确到小数点后两位 |
name = 'niki'
hobby = 'football'
str1 = "my name is %s" % name
print(str1) # my name is niki
str2 = "my name is %s, my hobby is %s" % (name,hobby)
print(str2) # my name is niki, my hobby is football
② 格式化法2
name = 'niki'
age = 18
str1 = f"my namae is {name}, my age is {age}"
print(str1) # my name i s niki, my age is 18
1.5、函数
① 在函数内部声明变量为全局变量:global
num = 100
def test():global numnum = 200
test()
print(num) # 200
② 多返回值
def test():return 'niki',18,True
name,age,isMale = test()
print(x,y,z) # niki 18 True
③ 传入参数时,位置参数需要在关键字参数之前,位置参数有先后顺序,关键字参数没有先后顺序的要求
def test(name,age,gender):print(f"my name is {name}, my age is {age}, I'm a {gender}")
test('Tom',gender='boy',age=18)
④ *args 参数,它会以元组的形式接收参数
def test(*args):print(args)
test('niki') # ('niki',)
test('niki',20) # ('niki',20,)
⑤ **kwargs 参数 ,它会以字典的额方式接收参数
def test(**kwargs):print(kwargs)
test(name='niki',age=18) # {'name':'niki','age':18}
⑥ 函数作为参数
def add(x,y):return x+y
def compute(add):result = add(6,3)print(result)
compute(add)
1.6、列表
① 定义空列表的方法
① l1 = []
② l2 = list()
② 列表的下标
正数:0 到 len-1
反数:-1 到 -len
③ 列表常用的操作
常用操作 | 描述 |
---|---|
l.append(元素) | 追加元素 |
l.extend(容器) | 将指定容器中的元素依次取出并追加到列表 |
l.insert(下标,元素) | 在指定下标插入指定元素 |
del l[下标] | 删除列表指定下标的元素 |
l.pop(下标) | 删除列表指定下标的元素 |
l.remove(元素) | 从前向后删除第一个匹配项 |
l.clear() | 清空列表 |
l.count(元素) | 统计指定元素在列表中出现的次数 |
l.index(元素) | 查找指定元素在列表中的下标 |
len(列表) | 统计容器内有多少的元素 |
1.7、元组
① 定义空元组的方法
① t1 = ()
② t2 = tuple()
③ 当定义一个只有一个元素的元组时,要加上逗号,例如 t = (‘niki’,) 否则 t =(123) 会被视为整型、t = (‘niki’) 会被视为字符串 …
② 元组常用的操作
常用操作 | 描述 |
---|---|
t.index(元素) | 查找数据的下标 |
t.count(元素) | 统计数据的个数 |
len(元组) | 统计元组中元素的个数 |
③ 注意点:元组中的元素不能改变
t = (1,True,[2,3,4])
t[2][0] = 5 # 并不是更改掉整个t[2],因此可以修改
print(t) # (1,True,[5,3,4])
1.8、字符串
① 字符串常用的操作
常用操作 | 描述 |
---|---|
str[下标] | 查找指定下标的字符 |
str.index(子串) | 查找指定子串第一次出现的位置 |
str.replace(子串1,子串2) | 将所有子串1改为子串2 |
str.split(子串) | 根据子串进行分割,返回一个分割后的列表 |
str.strip() str.strip(子串) | 去除首尾的空格、换行符 去除首位特定的子串 |
str.count(子串) | 统计字符串内子串出现的次数 |
len(字符串) | 获取字符串的长度 |
1.9、集合
① 定义空集合
s = set()
② 集合的常用操作
常用操作 | 描述 |
---|---|
s.add(元素) | 添加元素 |
s.remove(元素) | 移除元素 |
s.pop() | 从集合中随机取出一个元素 |
s.clear() | 清空集合 |
s1.difference(s2) | 返回一个新集合,其是两个集合的差集 |
s1.difference_update(s2) | 将集合1中存在于集合2的元素除去 |
s1.union(s2) | 返回一个辛几何,其是两个集合的并集 |
len(集合) | 集合的长度 |
1.10、字典
① 定义空集合
d = {}
d = dict()
TIP:字典的键需要是不可变的类型,例如字符串
② 字典的常用操作
常用操作 | 描述 |
---|---|
d[key] | 获取指定 key 对应的 value |
d[key] = value | 添加或更新键值对 |
d.pop(key) | 删掉 key 对应的键值对,并返回 value |
d.clear() | 清空字典 |
字典.keys() | 获取字典所有的 key |
key(字典) | 计算字典内的元素数量 |
1.11、数据容器小结
① 对比
数据容器 | 元素类型 |
---|