语法
数据类型
六种基本数据类型
三种可变数据类型 List set Dictionary
三种不可变数据类型 字符串 数字 元组
注意点:
每个条件、方法(代码)块之后都要加:,之后缩进进行排序
没有switch-case语句
把一个类作为迭代器需要在类中实现_iter_()和_next_()
创建空集合的方式 set(), {}创建一个空的字典
函数参数
-
必需参数
以正确的顺序出输入参数,调用时的数量必须和声明是的一样
调用函数参数的时候,必须传入参数,不然语法编译错误
-
关键字参数
函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用是的参数顺序与声明不一致,因为python解释器可以用参数名匹配参数值
-
默认参数
调用函数时,没用传递参数,则会使用默认参数(提前设定默认参数)
-
不定长参数(参数个数不定)
需要处理一个比声明时更多的参数,
- 一个* 以元组(tuple)的形式导入参数,存放所有未命名的变量参数
- 两个* 字典形式
- 单独的* 参数必须用关键字传入
-
强制位置参数(3.8)
匿名函数 (lambda)
只能写一行
lambda [arg1 [,arg2,.....argn]]:expression
模块
每个模块都有一个__name__属性,当其值是’__main__'时,表明该模块自身在运行,否则是被引入
输入输出
Python两种输出值的方式: 表达式语句和 print() 函数。
第三种方式是使用文件对象的 write() 方法,标准输出文件可以用 sys.stdout 引用。
如果你希望输出的形式更加多样,可以使用 str.format() 函数来格式化输出值。
如果你希望将输出的值转成字符串,可以使用 repr() 或 str() 函数来实现。
读和写文件
open() 将会返回一个 file 对象
open(filename, mode)
- filename:包含了你要访问的文件名称的字符串值。
- mode:决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®
模式 | r | r+ | w | w+ | a | a+ |
---|---|---|---|---|---|---|
读 | + | + | + | + | ||
写 | + | + | + | + | + | |
创建 | + | + | + | + | ||
覆盖 | + | + | ||||
指针在开始 | + | + | + | + | ||
指针在结尾 | + | + |
参数说明:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
- file: 必需,文件路径(相对或者绝对路径)。
- mode: 可选,文件打开模式
- buffering: 设置缓冲
- encoding: 一般使用utf8
- errors: 报错级别
- newline: 区分换行符
- closefd: 传入的file参数类型
- opener:
错误和异常
Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。
类
属性
方法
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数
self代表类的实例,而非类
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
专有方法:
- init : 构造函数,在生成对象时调用
- del : 析构函数,释放对象时使用
- repr : 打印,转换
- setitem : 按照索引赋值
- getitem: 按照索引获取值
- len: 获得长度
- cmp: 比较运算
- call: 函数调用
- add: 加运算
- sub: 减运算
- mul: 乘运算
- truediv: 除运算
- mod: 求余运算
- pow: 乘方
继承
单继承
多继承
class DerivedClassName(Base1, Base2, Base3):
需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。
方法重写
标准库
时间和日期
- 今天
today = datetime.date.today()
- 昨天
yesterday = today - datetime.timedelta(days=1)
- 上个月
last_month = today.month - 1 if today.month - 1 else 12
- 当前时间戳
time_stamp = time.time()
- 时间戳转datetime
datetime.datetime.fromtimestamp(time_stamp)
- datetime转时间戳
int(time.mktime(today.timetuple()))
- datetime转字符串
today_str = today.strftime("%Y-%m-%d")
- 字符串转datetime
today = datetime.datetime.strptime(today_str, "%Y-%m-%d")
- 补时差
today + datetime.timedelta(hours=8)