常见的类型
列表
- list.count(data) data出现的次数
- list.sort([reverse=False]) 升序排序
- list.reverse() 翻转
- list.index() 返回data第一次出现的索引
- 删除操作
- del list[index] 删除指定索引的数据
- list.remove[data] 删除第一个出现的指定数据
- list.pop() 删除末尾数据,并返回
- list.pop(index) 删除指定索引的数据,并返回
- 插入操作
- list.insert(index, data) 在指定位置插入数据
- list.append(data) 在末尾追加数据
- list.extentd(list2) 将列表2的数据追加到列表1
- 更多方法
ipython3 中 输入列表数据,按下tab键,可智能提示
关键字:
import keyword
print(keyword.kwlist)
元祖
- info.count
- info.index
- 列表元祖相互转换
- list(tuple)
- tuple(list)
字典
- dict.keys() 所有key列表
- dict.values() 所有value列表
- 取值
- dict[key] key不存在会报错
- dict.get(key) key不存在不报错
- 删除
- del dict[key] key不存在会报错
- dict.pop(key) 删除指定键值对, key不存在会报错 并返回值
- dict.popitem() 随机删除一个键值对,并返回元祖
- dict.clear() 清空字典
- 新增
- dict[key] = value 如果key存在修改,不存在则创建
- dict.setdefault(key, value) 如果Key存在,不修改数据,如果key不存在,则创建
- dict.update(dict2) 将字典2的数据合并到字典1
字符串
- 判断类型
- string.ispace() 都是空格,返回True
- string.isalnum() 至少含有一个字符,并且所有的字符都是字符或数字,返回True
- string.isalpha() 至少有一个字符,并且所有字符都是字母,返回True
- byte类型数字会报错
- string.isdecimal() 只包含全角,unicode数字,返回True
- string.isdigit() 只包含unicode数字,byte数字(单字节),全角数字(双字节),返回True
- string.isnumeric() 只包含unicode数字,全角数字,罗马数字,汉子数字,返回True
- byte类型数字会报错
- string.istitle() 是标题化,返回True
- string.islower() 至少包含一个区分大小写的字符,并且这些字符都是小写,返回True
- string.isupper() ...都是大写,返回True
- 查找和替换
- string.startswith(str) 检查字符串是否以str开头
- string.endswith(str) 检查字符串是否以str结尾
- string.find(str, start=0, end=len(string)) 检查str是否包含在string中,是返回索引值,否返回-1
- string.rfing(str,...) 从右开始查找
- string.index(str,...) 值不存在会报错
- string.rindex(str,...) 从右边找
- string.replace(old_str,new_str,num=string.count(old)) 把string中的old_str替换成new_str,替换不超过num次
- 大小写转换
- string.capitalize() 把字符串的第一个字符大写
- string.title() 把字符串的每个单词首字母大写
- string.lower() 转换string中所有大写为小写
- string.upper() ...大写
- string.swapcase() 翻转大小写
- 文本对齐
- string.ljust(width) 返回一个左对齐,并用空格填充至长度为width的新字符串
- string.rjust(width)
- string.center(width)
- 取出空白字符
- string.lstrip() 去掉string左边的空白字符
- string.rstrip()
- string.strip()
- 拆分和连接
- string.partition(str) 把字符串分成一个3元素的元祖
- string.rpartition(str) 从右查找分割
- string.split(str="", num) 以str分割字符串,仅分割num次
- string.splitlines() 按照\r,\n,\r\n分割,返回各行
- string.join(seq) 以string为分割符,将seq中所有的元素合并一个新的字符串
- 切片---顾头不顾尾
- 截取末尾2个字符str[-2]
- 倒序截取str[::-1]
集合
- set(list) 集合列表转换
- set1 & set2 交集
- set1 | set2 并集
- set1 ^ set2 对称交集
- set1 - set2 差集
内置函数
- len(item)
- del(item)
- max(item)
- min(item)
- map
map(lambda x, y: x+y, [1,2,3],[4,5,6])
- filter
filter(lambda x: x%2, [1,2,3,4])
- sorted
- dir()
- isinstance(value, type)
- issubclass(son, fathor)
- 反射
- getattr
- hasattr
- setattr
- delattr
类
常见的方法
- __str__
- __repr__
如果类中没有__str__方法,会掉用__repr__方法 - __call__
- __len__
- __hash__
- __eq__
__getattribute__() 属性拦截器
class A(object): def __getattribute__(self, item): if item == 'num': return '禁止访问' else: return object.__getattribute__(self, item)
### 常见的坑 class A(object): def __getattribute__(self, item): if item.startswith('a'): return 'a' else: # 千万不要返回属性,否则会无线重复调用 return self.test def test(self): print('in test')
类常见属性
- cls.__dict__ 查看类的属性
- cls.__dict__ 查看类的帮助文档
- cls.__name__ 查看类的名字
- cls.__base__ 查看类的第一个父类
- cls.__bases__ 查看类的父类构成的元祖
- cls.__module__ 查看类定义所在的模块
- 实例对象.__class__ 查看实例所对应的类
__slots__ 限制类中能增加的属性
类封装
@property @staticmethod @classmethod
class A(): def __init__(self): self.__num = 10 @property def num(self): return self.__money @num.setter def num(self, value): if isinstance(value, int): self.__money = value else: print('error') a = A() a.num #获取 a.num = 100 #设置
继承
mro() 钻石和小乌龟模型
常见的模块
标准库 | 说明 |
---|---|
builtine | 内建函数默认加载 |
os | 操作系统接口 |
sys | Python解释器 |
functools | 常用工具 |
json | 编码和解码JSON对象 |
loggin | 记录日志,调试 |
threading | 多线程 |
copy | 拷贝 |
time | 时间 |
datatime | 日期和时间 |
calendar | 日历 |
re | 正则 |
socket | 标准的BSD Socket API |
shutil | 文件和目录管理 |
glob | 基于文件通配符搜索 |
扩展库 | 说明 |
---|---|
requests | 爬虫常用模块 |
scrapy | 爬虫 |
beautifulsoup4 | HTML/XML的解析器 |
celery | 分布式任务调度模块 |
redis | 缓存 |
Pillow(PIL) | 图形处理 |
xlsxwriter | 仅写excle功能,支持xlsx |
xlwt | 仅写excle功能,支持xls,2013或更早版的office |
xlrd | 仅读excle功能 |
elasticsearch | 全文搜索引擎 |
pymysql | 数据库连接库 |
mongoengine/pymongo | mongodbpython接口 |
matplotlib | 画图 |
numpy/scipy | 科学计算 |
django/tornado/flask | web框架 |
xmltodict | xml转dict |
SimpleHTTPServer | 简单的HTTPServer,不适用web框架 |
gevent | 基于协成的Python网络库 |
fabric | 系统管理 |
pandas | 数据处理库 |
scikit-learn | 机器学习库 |
functools
可用dir()来查看有哪些方法
partial 把一个函数的某些参数设置为默认值,然后返回这个函数
def test(a): print(a) t = functools.partial(a=0) t() #out: 0 t(1) #out: 1
wraps
def wrapper(func): @functools.wraps(func) def inner(*args, **kwargs): """in inner""" print('---start---') return func() return inner def test(): """in test""" print("test") print(test.__doc__) ### 会打印test的文档说明,而非Inner的
hashlib
m = hashlib.md5() m.update(b'test') m.hexdigest()
collection
- namedtuple
- deque
- Counter
- OrderDict
- defaultDict
os
- os.makedirs('dirname1/dirname2') 生成多级递归目录
- os.removedirs('dirname1') 若目录为空则删除,并递归到上一级目录,如上一级为空,也删除
- os.mkdir('dirname') 创建目录
- os.rmdir('dirname') 以列表列出指定目录下的所有文件和子目录,包括隐藏文件
- os.remove() 删除一个文件
- os.rename(oldname, newname) 重命名
- os.stat('path/filename') 获取文件/目录信息
- os.system('bash command') 运行shell命令并显示结果
- os.popen('bash command').read() 运行shell命令,获取执行结果
- os.getcwd() 获取当前工作目录
- os.chdir(dirname) 改变当前脚本工作目录=shell下的cd
- os.sep 输出操作系统特定的路径分割符
- os.linesep 输出当前平台所使用的行终止符 win:\r\n linux:\n
- os.pathsep 输出用于分割文件路径的字符串 win-; linux-:
- os.name 输出字符串指示当前使用平台 win-'nt' linux-'posix'
- os.path
- os.path.abspath(path) 返回path规范化的绝对路径
- os.path.split(path) 将path分割成目录和文件名,元祖返回
- os.path.dirname(path) 返回path的目录=os.path.split() 第一个元素
- os.path.basename(path) 返回path最后的文件名,如果path以/or\结尾,返回空值=os.path.split()第2个元素
- os.path.exists(path) 判断Path是否存在
- os.path.isabs(path) 判断Path是否是绝对路径
- os.path.isfile(path) 判断是否是一个存在的文件
- os.path.isdir(path) 潘丹path是否是一个存在的目录
- os.path.join(path1,[path2,...]) 将多个路径组合后返回
- os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间
- os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
- os.path.getsize() 返回大小
sys
- sys.argv 命令行参数list,第一个元素是程序本身
- sys.exit(n) 退出程序,正常退出是exit(0) 错误退出是exit(1)
- sys.version 获取Python解释器的版本信息
- sys.path 返回模块的搜索路径
- sys.platform 返回操作系统平台名称
random
- random.random() 返回随机大于0小于1的小数
- random.uniform(1,3)
- random.Intrandom(1,3)
- random.randrange(1,10,2)
- random.choice() 随机返回一个
- random.shuffle() 打乱顺序
json
参数ensure_ascii = False 是否显示中文
- json.dumps/dump
- json.loads/load
pickle
dump,load 打开文件一定要以二进制打开
- pickle.dump
- pickle.load
re
元字符: /w 字符数字下划线; /d 数字 ;/D非数字;/s任何空字符
- re.findall(r'')/finditer()
参数里加()要取消匹配为(?:) - re.search() 只找1个
ret = re.search('<(?P<tag_name>\w+)>\w+</(?P=tag_name)>', '<h1>test</h1>')
- re.match() 从开始位置匹配
- re.split() 参数加()结果包含
- re.sub()
- re.compile()
time
运算符
- //整除
- list+list 合并字符串,列表,元祖
- list*4 重复字符串,列表,元祖