python
2019-09-09 10:34:26 1 举报
AI智能生成
Python基础知识
作者其他创作
大纲/内容
Python第二阶段
文件IO
:写法
with open(‘filename’,’mode’) as f: 、 with 方式帮你自动关闭
mode
读写--读写位置、是否覆盖:概念
有+:读写
读写 开头:r+
读写 覆盖:w+
读写 追加:a+
无+
只读:r
只写:w
写追加:a
命令
读
read(): 光标位置->文件尾
readline():光标位置 读取一行
readlines():光标位置 读取所有行 list形式返回
写
f.write(内容)
子主题
光标
seek(0,0):文件开始
seek(0,2):文件结尾
注意
f.flush
f.close:流的关闭
f.seek(0,0)-光标复位文件开始:读写后光标位置
对象存储
序列化
import pickle:写法
pickle.dump(python对象, 文件对象)
反序列化
import pickle:写法
Python对象=pickle.load(文件对象)
错误与异常
except (RuntimeError, TypeError, NameError)::写法
try except raise else finally :关键词
else:try子句没有发生任何异常的时候执行
finally:一定会被执行不论是否发生异常
except 粒度由小到大;不想处理异常直接raise:概念
多线程
threading
线程创建
关键词:模块threading、继承、构造函数__init__()、重写方法__run__
写法:
线程安全
线程安全类
Queue
线程同步
关键词:threading | Lock、Rlock | acquire()、release()
概念:创建锁对象进行加锁threading.Lock -> 获取锁对象 threadLock.acquire()
写法:
_thread(不推荐使用)
数据格式操作
JSON
JSON文件操作
关联词
概念
写法
JSON格式
关联词:JSON字符串、JSON对象、Python对象 | json对象=dumps(json字符串)、Python对象=loads(json对象) |
概念:JSON字符串、JSON对象、Python对象 和 他们 之间的相互转化
写法
XML
xml构成:tag attribute content
解析方式
SAX
关键词:遇到某个标签 触发某种事件 调用某个函数
startElement(self,tag,attributes) 获取 开始tag 和 包含的属性
characters(self, content) 获取 content
endElement(self,tag) 获取tag
startElement(self,tag,attributes) 获取 开始tag 和 包含的属性
characters(self, content) 获取 content
endElement(self,tag) 获取tag
概念:用事件驱动模型 | 遇到什么 触发什么 执行什么
写法:
优缺点:占用内存少;不能构造xml
DOM
关键词:内存树 |
获取根结点,DOMTree.documentElement;
获取属性,判断有无属性+获取属性,hasAttribute("shelf") getAttribute("shelf");
获取标签,getElementsByTagName('type')[0]
获取叶子结点,content对象 childNodes[0]
根据content对象获取content内容,childNodes[0].data
获取根结点,DOMTree.documentElement;
获取属性,判断有无属性+获取属性,hasAttribute("shelf") getAttribute("shelf");
获取标签,getElementsByTagName('type')[0]
获取叶子结点,content对象 childNodes[0]
根据content对象获取content内容,childNodes[0].data
概念:内存树,通过对树的操作来操作 XML
写法:
优缺点:占用内存大;可以构造xml
正则表达式
数据库操作
DCL(control)、DDL、DML、DQL
mysql
mysql-connector
关键词
连接(user passwd host 获取连接) 游标(利用连接获取游标 | 利用游标执行SQL) 事务(修改) SQL字符串拼接
myConn=mysql.connector.connect(host='',user='',passwd='') | myCursor=myConn.cursor() | myCursor.execute(sql)
概念:事务-涉及数据的修改都需要mycursor.commit()
写法:
注意:
sql='INSERT INTO sites(id,names,url) VALUES(%s,"%s","%s")'%(10,'rsj','www.juh.com')
%tuple;写的SQL语句 中占位符都用%s;字符串占位符加引号;%(变量1,变量2)
sql='INSERT INTO sites(id,names,url) VALUES(%s,"%s","%s")'%(10,'rsj','www.juh.com')
%tuple;写的SQL语句 中占位符都用%s;字符串占位符加引号;%(变量1,变量2)
pymysql
关键词:与mysql-connector一样 就获得连接的写法不同
概念:
写法:
注意:
CGI编程
Python技巧
with-类-as-变量
用途:
数据库 连接和游标的关闭
过程:
with A as b
block
会执行A的__enter__()方法 enter方法的返回值赋值给b
block执行完后 将调用A的__exit__()
with A as b
block
会执行A的__enter__()方法 enter方法的返回值赋值给b
block执行完后 将调用A的__exit__()
写法:
Python第一阶段
基础数据类型
不可变数据类型
记忆:数字 Number、字符 String、元组 tuple 布尔bool
关键词:int\float bool\True\False str ()\(1,) None
概念:什么可以表示False,0 空字符 空字典 None
用法:
str
关键词:正则
含有某个字符串:in ;not in
字符串取值: [0:10]
打印原始字符串:print(r'')
去除空格:' y sql y '.strip(' ')
字符串成分替代:str2.replace(‘oracle’,‘mysql’)
打印格式化字符串:
print ("我叫 %s 今年 %d 岁!" % ('小明', 10))
%s;%tuple
tuple
tuple中含有元素个数:len(tuple)
tuple中max和min:max(tuple) min(tuple)
可变数据类型
记忆:列表 list、集合 set、字典 dict
关键词:[] set()\{'1',} {'a':1,'b':2,}
概念:
用法:
list
增
末尾添加:append()
插入指定位置之前:insert(位置,元素)
删:移除列表中的元素(默认最后一个):pop()
改:数组下标方式:names[2]='jack'
查:names[2]
other
对列表中元素进行排序:list.sort()
统计某个元素在列表中出现的次数:list.count('rsj')
得出元素在列表中位置:list.index(元素)-顾头不顾尾
set
增:names.add('jack')
删:
names.discard('key'):没有这个key不会抛出异常
names.remove('key');没有这个key会抛出异常
清空集合:clear()
改:
查:
迭代:
没有类java的hasNext();所以借助异常退出迭代
函数式编程
dict
增:已有键值序列中没有就是添加:dic1['height']=185 #没有键值对,添加
删:根据key删除键值对:dict.pop(key)
改:更新dict2:dic2.update(dict1) :dict2中没有dict1中的键-加入,有-更新
查:根据键获得字典中的值:dict.get(key)
other
判断key是否存在字典中:key in dict
字典中键值对个数:len(dict)
运算符
指数函数:**=
身份运算符is (比较指针值): a is b 等价于 id(a)==id(b)
成员运算符:in
取整除://
程序逻辑结构
for else
while else
函数
内置函数
format
print('name:%s'%(a,))
iter(list):根据可迭代对象 获取迭代器
len:除了Number都可以用
id:id(a) 获取a的内存地址
切片函数:[开始,结束,步长]
range(10): 创建一个从0开始的整数列表
dir:dir(tuple) 打印对象拥有的所有方法
abs():绝对值
reverse(list):反向列表中元素。
round(数字,小数位数):四舍五入 | 原理:化成e幂函数 一样接近时取偶数
max(str\list\set\map)
repr(Python对象):将对象转化为供解释器读取的形式
函数执行
参数传递方式
值传递:不可变类型
引用传递:可变类型
参数类型
默认参数
必须参数
关键字参数:传参过程 str='rsj'
不定长参数
*:tuple接收
**:dict接收
变量范围
local 小于 enclosing(闭包) 小于 global 小于 built-in
关键字:global对应global范围 nonlocal对应enclosing范围
匿名函数(lambda)
sum=lambda x,y : x+y
迭代器
写法:iterator=iter(可迭代对象) ; next(iterator)
生成式
[x**2 for x in range(10)]
先看后面的for语句
生成器
背景:产生所有结果内存消耗大,每次生成一个函数 返回一些结果
写法:
把生成式的[] 换成 () -> (x**2 for x in range(10))
yield返回值函数;每次调用yield会暂停,可以使用next()和send()函数恢复生成器
本质:一个可迭代对象
工程结构
包
目录 变成 包:一个目录 只有包含 __init__.py 的文件才会被认作是 一个包
__init__.py作用:
第一次被导入时 执行
为__all__变量赋值:__all__=['引入模块1','引入模块2','引入模块3']
模块
main函数:模块自身在运行 ,__name__= __main__
模块搜索路径:存储在sys模块 中的 path变量
推荐导包模块方式:from package import item(module、function、variable)
标准库
日期时间
获取今天
日期时间-格式化->字符串
字符串-格式化->日期时间
其它
字符集
ASCII
总共256个元素
Unicode
每个字符统一用2个或4个字节来存储;收录了全世界所有国家的语言
utf-8
英文1个字节;汉字3个字节
gbk
兼容gb2312;存储一个汉字2个字节
内存使用方便-Unicode统一编码;磁盘节省空间-utf-8;网页传输数据量-utf-8withoutBOM
Python第三阶段
内存分析
深拷贝、浅拷贝
深拷贝
概念:开辟新的内存,拷贝内容
浅拷贝
概念:拷贝引用
Python面向对象
0 条评论
下一页