json格式数据转换
json.dumps(data)
通过 json.dumps(data) 方法把 python数据 转化为了 json数据
python
data= json.dumps(data)
如果有中文可以带上:ensure_ascii=False 参数来确保中文正常转换
json. loads(data)
通过 json.loads(data) 方法把 json数据 转化为了 python列表或字典
python
data = json. loads(data)
异常捕获
捕获全部异常
python
try:
xxx
except:
xxx
捕获指定异常
python
try:
xxx
except (NameErr, ZeroDivisionError) [ as 别名]:
xxx
模块
模块导入
语法
python
from 模块名 import [模块 | 类 | 变量 | 函数 | *] [as 别名]
python包
什么是 Python 包?
一个文件夹,里面可以存放许多Python模块(代码文件),通过包,在逻辑上将一批模块归为一类,方便使用。
__init__.py文件的作用?
创建包会默认自动创建的文件,通过这个文件来表示一个文件夹是一个Python包,而非普通文件夹。(只有这个文件存在它才是包,否则是普通文件夹)
__all__变量 的作用?
控制 import * 能够导入的内容
类和对象
类由哪两部分组成?
- 类的属性,称之为:成员变量
- 累的行为,称之为:成员方法
注意:函数是写在类外的,定义在类内部的我们都称之为方法
类的定义
python
class 类名称:
成员变量
def 成员方法(self, 参数列表):
成员方法体
创建类对象
python
对象 = 类名称()
self的作用
- 表示 类对象本身
- 只有通过 self,成员方法才能访问类的成员变量
self出现在形参列表中,但是不占用参数位置,无需理会
构造方法
构造方法的名称:
__init__
例如:
python
def __init__(self, name):
self.name = name
构造方法的作用
- 构建类对象的时候会 自动运行
- 构建类对象的传参会传递给构造方法,借此特性可以给成员变量赋值
注意事项
- 构造方法不要忘记 self关键字
- 在方法内使用成员变量需要使用
self
魔术方法(内置方法)
常用的魔术方法:
| 方法 | 功能 |
|---|---|
__init__ |
构造方法,可用于创建类对象的时候设置初始化行为 |
__str__ |
用于实现类对象转字符串的行为 |
__lt__ |
用于2个类对象进行小于或大于比较 |
__le__ |
用于2个类对象进行小于等于或大于等于比较 |
__eq__ |
用于2个类对象进行相等比较 |
封装
私有成员
命名以 __ 开头 的 成员变量 和 成员方法 即为 私有成员
举例:
python
class 类名称:
__name = None
def __get_name(self):
return self.__name
继承
语法
python
class 类名(父类1, 父类2, ..., 父类N):
类的内容
单继承和多继承
- 单继承:一个类继承另一个类
- 多继承:一个雷继承多个类,按照顺序从左向右一次继承
多继承中,如果父类有同名方法或属性,先继承的优先级高于后继承的
pass关键字的作用
pass 是占位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思
复写
定义
对父类的成员属性或成员方法进行重新定义
语法
在子类中重新实现同名成员方法或成员属性即可
子类如何调用父类成员
方法一:调用父类成员
- 使用成员变量:父类名.成员变量
- 使用成员方法:父类名.成员方法(self)
方法二:使用 super() 调用父类成员
- 使用成员变量:super().成员变量
- 使用成员方法:super().成员方法()
举例:
python
# 父类
class SuperTest:
super_name = None
def get_name(self):
return self.super_name
# 子类
class ChildTest(SuperTest):
child_name = None
def get_name1(self):
self.child_name = SuperTest.super_name
SuperTest.get_name(self)
def get_name2(self):
self.child_name = super().super_name
super().get_name()
注意:只可以在子类内部调用父类的同名成员,子类的实体类对象调用默认是调用子类复写的
多态
1.什么是多态?
多态指的是,同一个行为,使用不同的对象获得不同的状态,如,定义函数(方法),通过类型注解声明需要父类对象,实际传入子类对象进行工作,从而获得不同的工作状态
2.什么是抽象类(接口)
包含抽象方法的类,称之为抽象类。抽象方法是指:没有具体实现的方法(pass)称之为抽象方法
3.抽象类的作用
多用于做顶层设计(设计标准),以便子类做具体实现,也是对子类的一种软性约束,要求子类必须复写(实现)父类的一些方法并配合多态使用,获得不同的工作状态。
类型注解
类型注解有什么作用?
- PyCharm 等开发工具 对代码做类型推断 协助做代码提示
- 开发者自身做类型的备注
类型注解支持
- 变量的类型注解
- 函数(方法)的形参和返回值的类型注解
变量的类型注解语法
- 语法一:变量: 类型
- 语法二:在注释中,# type: 类型
举例:
python
my_list: list = [1, 2, 3]
my_tuple: tuple = (1, 2, 3)
my_dict: dict = {"a": 1, "b": 2, "c": 3}
my_set: set = {"a", "b", "c"}
my_set_str = "a,b,c" # type: str
注意事项
类型注解只是提示性的,并非决定性的。数据类型和注解类型无法对应也不会导致错误
方法的类型注解语法
- 可以在 形参 和 返回值 添加类型注解
- 格式如下:
python
# 返回值类型注解的符号使用 ->
def 函数方法名(形参: 类型, ..., 形参: 类型) -> 返回值类型
pass
举例:
python
def my_func(arg1: int, arg2: str) -> str:
return str(arg1) + arg2
联合注解
什么是 Union 类型
使用 Union 可以 定义联合类型注解
Union 的使用方式
- 导包:
from typing import Union - 使用:
Union[类型, 类型, ..., 类型]
举例:
python
from typing import Union
my_list1: list[Union[int, str]] = [1, 2, "a", "b"]