Table of Contents
- keyword.kwlist中查看
-
#!/user/bin/env python # -*- coding:utf-8 -*-
- linux下需要制定
Python运算符
Python数据类型
-
数字类型
- 不可变类型,每次赋值变为新的对象
-
整数 Int
- 可以看做Long类型
- 小正数对象池
- -5-256之间
-
浮点数 float
- 小数
-
复数
- complex
-
数学计算方法
- abs() 返回数字的绝对值
- ceil() 返回小数进位的整数
- exp(x) 返回e的x次幂
- floor() 返回小数的舍位整数
- max()/min() 返回最大最小整数
- pow(x,y) x**y的值
- round(x,[n]) 返回浮点数四舍五入
- sqrt(x) 返回x的平方根
-
- 不可变类型,每次赋值变为新的对象
-
bool类型
- bool()可以转换为bool值
- None也不是布尔类型,而是NoneType
-
列表
-
内置方法
- append(obj) 末尾添加新对象
- count(obj) 统计某个元素在列表中的次数
- extend(seq) 在列表末尾追加可迭代对象里面的元素
- index(obj) 找到某个值的索引
- insert(index,obj) 插入某个值
- pop(obj=lists[-1]) 默认移除最后一个值
- remove(obj) 移除列表中某一个值
- reverse() 列表翻转
- sort([func]) 对列表排序
- copy() 赋值列表,浅复制
- clear() 清空列表
-
-
元组
- 删除插入修改等操作不能做
- 只保证一级子元素不可变
- 尽量都使用不可变类型
-
字符串
-
字符串是不可变序列
-
字符串的运算
- * 乘法操作
- + 字符串连接(运算速度慢) join()
- [] 通过索引访问
- [:] 切片访问
- in /not in 成员运算符
- r/R 原始字符串,不转义
-
常用字符串操作方法
- encode() 编码bytes
- decode() 解码字符串
- find()查找子串
- index() 获取下标
- len(string) 字符串长度
- lower()、upper() 小写大写字符
- split 分割字符串
- strip 去除两端指定符号,默认是空格
- startswith,endswith 字符串开头结尾是否匹配
-
str.format()格式化方法
- 1.{0}、{1}、{2} 位置参数,引用需要按照顺序
- 2.{name}{age}{gender} 关键字参数,需要是字典
-
字符串颜色控制
- 终端颜色显示
- 格式:
\033[显示方式;前景色;背景色m正文\033[0m
- 格式:
- https://www.liujiangblog.com/course/python/21
- 终端颜色显示
-
-
字典
- python3.6以后,字典保证了插入的顺序
- 字典可精确描述为不定长、可变、散列的集合类型
- 字典的重要方法:
- clear() 删除字典所有元素
- copy() 浅复制一个字典
- fromkeys() 创建一个新字典,返回元素做字典的键
- get() 获取字典元素
- items()、keys()、values():返回字典键和值,返回字典键,返回字典值
- pop(key)删除并返回指定key的值
- popitem()删除并返回字典最后一个键值对
- setdefault() 类似get方法,可以有默认值
- update(dcits) 合并dicts的内容到当前字典
-
bytes
- 字符串以字符为单位处理,字节串以字节为单位处理
-
set
- set是一个无序不重复的集
- 创建空集合要使用set,{}默认是字典
- set的核心就是自动去重
- callable()
- 判断对象是否可以调用,(对象具有__call__方法)
- chr()
- Ascii字符编码
- ord()
- 返回Ascii十进制
- bytes()
- 将对象转换成字节串
- compile
- 将字符串变异成python能识别执行的代码
- 也可以将文件读成字符串在变异
- https://www.runoob.com/python/python-func-compile.html
- dir()
- 显示所有对象的属性和方法
- divmod()
- 返回商和余数的元组
- eval()
- 将字符直接解读执行
- 有运算直接就算
- 可以有返回值
- exec()
- 执行字符串或者complie方法编译过的字符串,没有返回值
- globals()
- 列出所有全局变量
- locals()
- 返回当前对象的局部变量
- hash()
- 为字符串生成哈希函数
- help()
- 对象的帮助文档
- id()
- 返回对象的内存地址
- 经常查看变量引用,对象是否相等
- isinstance()
- 判断一个对象是否是某个类的实例
- issubclass()
- 判断a是否是b的子类
- len()
- 判断对象的长度
- Iter()
- 制造一个迭代器
- 应该就是添加量iter方法
- next()
- 调用__next__方法、获取下一个元素
- max(),min()
- 返回最大最小,可以指定对象
- slice()
- 返回一个切片类型的对象
- vars()
- 和dir差不多,把key和value一块返回
- map(func,list)
- list的每个元素都调用func函数
- 可以用来批量的更改list内的值
- filter()
- 传递一个迭代对象,一个函数
- 函数的作用就是返回一个bool,在filter中判断是否返回迭代对象的值
- ListFindAll
- zip()
- 将多个可迭代对象打包成元组
- sorted()
- 排序函数
Python类和实例
-
实例变量和类变量
- 实例变量:生成对象内部的变量,每个对象不一样
- 类变量:每个对象都可以访问,是公有对象
-
类方法
- 实例方法:对象的方法,包含self
- 静态方法:无默认参数,类调用 @staticmethod
- 类方法:cls,指代类本身 @classmethod
-
类方法,类变量,类实例,类实例变量存储
- 类,类方法,类变量只存储一份,所有实例共享它们
- 创建实例是,实例中除了封装name,age等,还好保存一个指向类的指针,因此实例可以以找到类,但是类找不到具体的实例
-
成员保护和访问限制
- 双下划线 __ 代表私有成员或者方法,
- 通过set,get来设置
- 好处是可以限制设置值的类型
- 单下划线 _ 代表不希望被外部访问
- 双下划线开头结尾 __name__
- python中的魔法方法
- 双下划线 __ 代表私有成员或者方法,
-
@property和property()函数
- 将方法伪装为属性调用
-
class Perple: def __init__(self,name): self.name = name @property def name(): return self.age @name.setter() self.name = name
-
特殊成员和魔法方法
-
__init__ : 构造函数,在生成对象时调用 __del__ : 析构函数,释放对象时使用 __repr__ : 打印,转换 __setitem__ : 按照索引赋值 __getitem__: 按照索引获取值 __len__: 获得长度 __cmp__: 比较运算 __call__: 调用 __add__: 加运算 __sub__: 减运算 __mul__: 乘运算 __div__: 除运算 __mod__: 求余运算 __pow__: 幂
-
reflect反射
- hasattr()、getattr()、setattr()和delattr()
- 判断对象是否有方法,属性,获取设置删除
- getattr(obj,name,返回默认对象) 返回属性或者对象
- setattr(obj,name,属性或者是对象) 没有返回值
- hasattr() 判断是否有属性或者方法 返回bool
- delattr() 删除属性或者方法 没有返回值
- https://www.liujiangblog.com/course/python/48
Python模块与包
- python中分为 代码块 if for等,函数 def ,类 class,模块 py文件,包 带__init__.py的文件夹
- 模块分为三种,自定义模块,内置模块,第三方模块
- 包名通常全部为小写,避免使用下划线
- 导入方法
- python导入是根据sys.path来导入
- sys.path.append() 可以添加路径
- import
- from xx.xx import xx.xx
- from xx.xx import xx as 自定义名
- from xx.xx import * 慎用*来导入,容易模块名冲突
- python导入是根据sys.path来导入
Python常用标准库模块
-
os模块
-
文件目录操作
- 查看当前目录相关
- os.getcwd() 获取当前工作目录
- os.chdir() 改变路径,类似cd
- os.curdir 当前目录
- os.pardir 父级目录
- 建立删除遍历目录
- os.makedirs(“/path/abc”) 建立多层目录
- os,removedirs(“/path/abc”) 删除多层目录
- os.mkdir() 创建单层目录
- os.rmdir() 删除单层目录
- os.listdir() 遍历目录下的文件和子目录
- os.remove() 删除一个文件
- os.rename() 重命名目录
- os.stat() 获取文件,目录信息
- 返回目录
- os.path.abspath() 返回绝对路径
- os.path.split() 返回分割的元组,目录和文件名
- os.path.dirname() 返回path的目录,
- os.path.basename() 返回path最后的文件名,没有文件名就是空值
- os.path.exists() 判断目录文件是否存在
- os.path.isabs() 判断是否是绝对路径
- os.path.isfile() 判断是不是文件
- os.path.isdir() 判断是不是文件夹
- os.path.join() 返回path合成的多个路径
- os.path.getmtime(path) 返回文件目录最后的修改时间
- os.path.getsize(filename) 返回文件包含的字符数量
- 查看当前目录相关
-
-
sys模块
- 重要的属性方法
- sys.argv
- sys.exit(n) n为0则是正常退出,否则抛出异常SystemExit
- sys.path 返回模块搜索路径
- 重要的属性方法
-
subprocess
- 用于创建子进程
-
random
- 用于生成伪随机数
- random.seed(a=None,version=2)
- 初始化随机数生成器,默认为系统时间
- random.getstate()
- random.setstate(state)
- random.seed(a=None,version=2)
- 针对整数的方法
- random.randrange(stop)
- random.randrange(start,stop[,step])
- 从range范围选定一个随机数
- random.randint(a,b)
- 返回a<=N=b的随机整数N
- 针对序列类型的方法
- random.choice()
- 从非空序列中选取一个元素
- random.choices()
- random.shuffle(x[,random])
- 打乱x内元素的排序,可变序列
- random.sample(population,k)
- 打乱x内元素的排序,可变序列
- random.choice()
- 用于生成伪随机数
-
bisect
- 二分查找
-
hashlib
- 提供多种摘要算法
-
queue
- 轻量的队列模块
-
fileinput
- 对标准输入和多个文件逐行遍历
- 默认从stdin sys.argv[1:]获取
- 使用方法:
- fileinput.input(file=(),inplace=True)
- file 可以是一个元组代表多个要处理的文件
- inplace 是否修改源文件
- backup 备份后缀名
- mode 文件读写模式
-
with fileinput.input(files=('spam.txt', 'eggs.txt')) as f: for line in f: process(line)
- 主要方法
- fileinput.filename() 当前文件名
- fileinput.fileno() 文件总行数
- fileinput.lineno() 当前的行数
- fileinput.isfirstline() 是否是第一行
- fileinput.isstdin() 是否是stdin参数
- fileinput.nextfile() 关闭当前文件,开始下一个文件
- fileinput.close() 退出
-
import fileinput with fileinput.input(files="d:\\\\1.txt") as f: for line in f: line = line.rstrip() num = fileinput.lineno() print("#%d\t%s" % (num, line))
- fileinput.input(file=(),inplace=True)
-
shutil
- shutil可以简单地理解为
sh + util
,shell工具的意思。shutil模块是对os模块的补充,主要针对文件的拷贝、删除、移动、压缩和解压操作。
- shutil可以简单地理解为
-
zipfile
- zipfile模块提供了通用的创建、读取、写入、附加和显示压缩文件的方法
-
tarfile
- tarfile模块用于解包和打包文件,包括被
gzip
,bz2
或lzma
压缩后的打包文件。如果是.zip
类型的文件,建议使用zipfile模块
- tarfile模块用于解包和打包文件,包括被
-
getpass
- getpass模块用于输入密码时,隐藏密码字符。
-
json
- Json是一种轻量的数据交换格式
- json的数据要求用双引号将字符串引起来,并且不能有多余的逗号
- json最好是字符串,不要是字节串
- 类型转换:
- python转换成json
- dict——-object
- list,tuple ——-array
- str ——-string
- int,float,int-& folat-derived Enums ——-Number
- true false ——-True,False
- null——- None
- json转换python
- object ——- dcit
- array——- list
- string——- str
- number(int) ——-int
- number(real) ——-float
- true false ——-True,False
- null ——-None
- python转换成json
- 使用方法
- dumps(obj), 转换成json
- loads(obj) 转换成对象
- dump(str,fp), 转换json放入文件
- load(fp) 从文件中解析
-
pickle
- 复杂结构的序列化使用pickple
- 不可读,只能用于python
- Pickle可以持久化Python的自定义数据类型,但是在反持久化的时候,必须能够读取到类的定义。
- 使用方法:
- dumps(obj), 转换成pickle
- loads(obj) 转换成对象
- dump(str,fp), 转换pickle放入文件
- load(fp) 从文件中解析
-
shelve
- shelve模块以类似字典的方式将Python对象持久化,它依赖于pickle模块,但比pickle用起来简单。
-
time
- time模块只支持到2038年,datetime
- python中用三种方法表示时间
- 时间戳(timestamp) time.time()
- 格式化的时间字符串(string_time) time.localtime()
- 结构化时间(struct_time) 时间元祖 time.strftime(‘%Y%m%d’)
- 格式化时间字符串
- time.strftime(‘%Y%m%d’) 可以获得格式化的时间字符串(string_time)
- 常用time方法
- time.sleep() 睡眠暂停N秒
- time.time() 返回当前系统时间戳
- time.localtime([secs]) 将时间戳转换为结构化时间 默认是time.time()
- time.mktime(t) 将一个结构化时间转换为时间戳
- time.ctime([secs]) 将时间戳转换为本地时间的格式化字符串
- time.asctime([t]) 将结构化时间转为格式化字符串
- time.strftime(fromat [,t]) 返回格式化字符串表示的当地时间
- t:默认是time.localtime()
- time.strptime(string[,format]) 将格式化字符串时间转为结构化时间
- 时间格式转换
-
从 到 方法 时间戳 UTC结构化时间 gmtime() 时间戳 本地结构化时间 localtime() UTC结构化时间 时间戳 calendar.timegm() 本地结构化时间 时间戳 mktime() 结构化时间 格式化字符串 strftime() 格式化字符串 结构化时间 strptime()
-
datetime
- 与time模块相比,datetime模块提供的接口更直观、易用,功能也更加强大
- datetime模块的类
- datetime.data 日期类
- datetime.time 时间类
- datetime.datetime 日期与时间类
- datetime.timedelta 表示date time datetime之间的时间差
- datetime.tzinfo 时区相关信息抽象基类
- datetime.timezone 实现tzinfo的抽象基类
- https://www.liujiangblog.com/course/python/69
-
timeit
- timeit模块是Python内置的用于统计小段代码执行时间的模块,它同时提供命令行调用接口
-
logging
-
任务场景 最佳工具 普通情况下,在控制台显示输出 print()
报告正常程序操作过程中发生的事件 logging.info()
(或者更详细的logging.debug()
)发出有关特定事件的警告 warnings.warn()
或者logging.warning
()报告错误 弹出异常 在不引发异常的情况下报告错误 logging.error()
,logging.exception()
或者logging.critical()
- logging模块定义了下表所示的日志级别,按事件严重程度由低到高排列(注意是全部大写!因为它们是常量。):
级别 级别数值 使用时机 DEBUG 10 详细信息,常用于调试。 INFO 20 程序正常运行过程中产生的一些信息。 WARNING 30 警告用户,虽然程序还在正常工作,但有可能发生错误。 ERROR 40 由于更严重的问题,程序已不能执行一些功能了。 CRITICAL 50 严重错误,程序已不能继续运行。 - https://www.liujiangblog.com/course/python/71
-
4.扩展延伸知识
-
python单例设计模式
- 设计模式:
- 前人工作总结和提炼,对某一特定问题成熟的解决方案
- 使用设计模式为了可重用代码,让他人理解
- 单例设计模式的应用场景
- 音乐播放
- 回收站
- 打印机
- __new__方法
- 使用类名()创建对象,
- 单例模式
- 一定要返回:return super().__new__(cls)
- 定义一个类变量instance,初始值为None
- 在new方法中判断instance是否是空,不是空直接返回对象
- cls代表当前类。new方法是静态方法,要手动传递cls
- init是初始化方法,如果是单例模式,只初始化一次,也需要类变量来判断
5.知识内容个人梳理
6.今天都复习了之前的什么内容
python单例设计模式
- 设计模式:
- 前人工作总结和提炼,对某一特定问题成熟的解决方案
- 使用设计模式为了可重用代码,让他人理解
- 单例设计模式的应用场景
- 音乐播放
- 回收站
- 打印机
- __new__方法
- 使用类名()创建对象,
- 单例模式
- 一定要返回:return super().__new__(cls)
- 定义一个类变量instance,初始值为None
- 在new方法中判断instance是否是空,不是空直接返回对象
- cls代表当前类。new方法是静态方法,要手动传递cls
- init是初始化方法,如果是单例模式,只初始化一次,也需要类变量来判断
6.今天都复习了之前的什么内容