Python进阶
2024-03-14 11:30:34 1 举报
AI智能生成
登录查看完整内容
《Python进阶》是一本深入讲解Python编程技术的图书,内容涵盖了Python的高级特性、并发编程、网络编程、数据库编程、系统管理以及模块开发等。本书还提供了大量实用的案例和代码示例,帮助读者理解和掌握Python的实用技巧。适合有一定Python基础的读者阅读,为Python程序员提供了丰富的进阶学习资源。
作者其他创作
大纲/内容
如果字符串开始不符合正则表达式,则匹配失败,函数返回 None
匹配整个字符串,直到找到一个匹配
只需要结果的索引的值
re. start() || end() || span( 开始 ,结束 ) || group( 索引 )
返回函数
生成正则对象
re.compile
返回列表
re.findall( 正则,字符串,起始,结束 )
返回迭代器
同 findall()
re.finditer()
re.split( 正则,字符串,分割次数,控制正则的匹配方式 )
re 模块
正则表达式
通用网关接口、是一段程序 运行在服务器上
CGI编程
pip install mysql-connector-python
1.安装mysql 驱动
import mysql.connector
2. 导包
3.创建数据库连接返回对象
数据库对象 . cursor()
4. 实例化返回游标对象
防止数据库查询发生 SQL 注入 ,使用 %s 占位符来转义查询的条件
光标对象 . execute( 执行SQL )
5.执行
数据库对象 . close()
游标对象 . close()
6.关闭游标 和 数据库连接
修改和插入,必须使用提交
数据库对象 . commit()
回滚
数据库对象 . rollback()
获取记录的ID
游标对象 . lastrowid
获取所有记录
游标对象 . fetchall()
获取一条记录
游标对象 . fetchone()
MySQL
创建数据库连接
区别
是 Python3.x 连接 Mysql数据库的
一个事务中、要么全部成功、要么全部失败
原子
一个事务中、 数据更新的值要一致
一致
事务操作的之间是隔离的
隔离
一旦事务被提交、数据库的数据改变是永久性的
持久
ACID
|__Warning|__Error |__InterfaceError |__DatabaseError |__DataError |__OperationalError |__IntegrityError |__InternalError |__ProgrammingError |__NotSupportedError
数据库异常
PyMySQL
Socket
低级别
SocketServer
高级别
AF_UNIX 或 AF_INET
family
SOCK_STREAM 或 SOCK_DGRAM
type
socket.socket( family,type )
1.socket对象
host = socket.gethostname()port = 9998
2.获取本地主机名和设置端口
3.绑定端口号
serverSocket.listen(5)
4.最大连接数
5.建立客户端连接
clientSocket.send(msg.encode(\"utf-8\"))
6.构建消息、发送消息
clientSocket.close()
7.关闭资源
服务端
3.连接服务
msg = s.recv(1024)
4.接收小于 1024 字节的数据
s.close()
5.释放资源
print(msg.decode('utf-8'))
6.打印消息
客户端
语法格式
80
HTTP 网页访问
nntplib
119
NNTP 帖子
20
FTP 文件传输
poplib
110
POP3 接收邮件
imaplib
143
IMAP4 获取邮件
telnetlib
23
Telnet 命令行
70
Gopher 信息查找
常用模块
网络编程
指定主机的ip地址或者域名如:runoob.com,可选参数
host
port
如果SMTP在你的本机上,只需要指定服务器地址为 localhost
local_hostname
smtpObj = smtplib.SMTP( host ,port ,host_name )
SMTP.sendmail( 发送者地址,发送地址, 消息 )
sender = 'from@runoob.com'receiver = ['zhangqilin0906@163.com']
1.发送者地址和发送地址
2.创建消息
3.主机ip 和 发送
发送邮件
SMTP
_thread.start_new_thread ( 线程函数 ,传递给线程的参数、必须是元组 , 可选 )
_thread
返回当前的线程变量
threading. current_thread()
返回一个包含正在运行的线程的列表。正在运行指线程启动后、结束前,不包括启动前和终止后的线程
threading.enumerate()
返回正在运行的线程数量,与 len(threading.enumerate()) 有相同的结果
threading.active_count()
启动线程
实例 . start()
等待线程结束
实例 . join()
获取锁
. acquire()
释放锁
. release()
创建锁
实例 . Lock()
创建Thread类的实例
threading . Thread( target=线程将要执行的目标函数,args=(目标函数的参数,以元组形式传递),kwargs={目标函数的关键字参数,以字典形式传递},daemon=指定线程是否为守护线程 )
包含 _thread 所有模块,还增加其它功能
threading(推荐使用)
多线程
# 可以将包含xml数据的字符串转换为Element对象
root1 = ET.fromstring(xml_string)
# 访问元素的文本内容
title_text = title_element.text
# 找具体指定标签的第一个子元素
title_element = root2.find(\"title\")
# 可以访问元素的属性
price = book_element.attrib[\"price\"]
# 找具体指定标签的所子元素
book_element = root2.findall(\"book\")
# 删除元素
root2.remove(title_element)
root2 = tree.getroot()
# 解析xml文档
tree = ET.parse('E:\\pythonProjects\\demo01\\movies.xml')
# 创建新的元素
new_element = ET.Element(\"new_element\")
# 可以创建具有指定标签的子元素
import xml.etree.ElementTree as ET
导包
ElementTree
解析器负责读取 XML 文档,并向事件处理器发送事件,如元素开始跟元素结束事件
而事件处理器则负责对事件作出响应,对传递的 XML 数据进行处理
解析器和事件处理器
一种基于事件驱动的API
创建一个 SAX 解析器并解析xml文档
创建一个 XML 解析器并解析 xml 字符串
文档启动的时候调用。
startDocument() 方法
解析器到达文档结尾时调用。
endDocument() 方法
遇到XML开始标签时调用,name 是标签的名字,attrs 是标签的属性值字典。
遇到XML结束标签时调用。
endElement(name) 方法
1.自定义类 继承 contenthandler类
# 创建一个 XMLReader
2.parser = xml.sax.make_parser()
# 关闭命名空间
# 重写 ContextHandler
parser.setContentHandler( Handler )
4.Handler = MovieHandler()
5.parser.parse(\"movies.xml\")
SAX
一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里
是W3C组织推荐的处理可扩展置标语言的标准编程接口
from xml.dom.minidom import parse
import xml.dom.minidom
# 使用minidom解析器打开 XML 文档
DOMTree = xml.dom.minidom.parse(\"movies.xml\")
collection = DOMTree.documentElement
collection.getElementsByTagName(\"movie\")
collection.hasAttribute(\"shelf\")
DOM
XML解析
对数据进行编码
json.dumps()
对数据进行解码
json.loads()
JSON
time.ctime
类似函数
time.asctime(时间)
time.strftime(格式,时间)
格式化时间
time.mktime(time.strptime(字符串,格式))
字符串转时间戳
time.perf_counter() # 返回系统运行时间time.process_time() # 返回进程运行时间
返回格林威治天文时间下的时间元组t
time.gmtime()
接受时间元组并返回时间戳
time.mktime()
睡眠
time.sleep()
初始化时间
time.tzset()
本地时区
time.zone()
常用函数
时间类
import time
返回一个多行字符串格式的 year 年年历
返回当前每周起始日期的设置
calendar.firstweekday( )
是闰年返回 True,否则为 False
calendar.isleap(year)
返回在Y1,Y2两年之间的闰年总数
返回一个多行字符串格式的year年month月日历
返回两个整数。第一个是该月的星期几,第二个是该月有几天
返回一个整数的单层嵌套列表
相当于 print(calendar.calendar())
相当于 print(calendar.month())
设置每周的起始日期码
calendar.setfirstweekday(weekday)
和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间戳
calendar.timegm(tupletime)
返回给定日期的日期码
用来处理年历和月历
import calendar
日期与时间
获取数据库名称
dblist = myclient.list_database_names()
获取指定库的集合
mydb = myclient[\"runoobdb\"]
插入多个
mydb.insert_many()
添加操作
mydb.insert_one(mydict)
查询所有、阔号内可以指定字段和条件
mydb.find()
查询一条
mydb.find_one()
修改多条
update_many()
修改一条
mydb.update_one
删除集合
mydb.drop()
删除多个、删除所有
mydb.delete_many()
删除一条
mydb.delete_one()
连接数据库
myclient = pymongo.MongoClient(\"mongodb://localhost:27017/\")
import pymongo
MongoDB
编码
urlib.requester.quote()
解码
urlib.requester.unquote()
请求处理
urlib.requester.Request(url地址,数据,头部信息)
读取网页内容
对象 . read()
读取一行
对象 . readline()
读取全部内容
对象 . readlines()
状态码
对象 . getcode()
响应结果
urllib.request.urlopen()
打开和读取url
urlib.requester
包含requester抛出的异常
urlib.error
返回 6 个字符串:协议,位置,路径,参数,查询,判断
urllib.parse.urlparse(url路径)
解析url
urlib.parse
解析 robts.txt(是一种存放于网站根目录下的 robots 协议,它通常用于告诉搜索引擎对网站的抓取规则) 文件
urlib.robotparser
urllib
uWSGI
math.acos(x) 返回 x 的反余弦,结果范围在 0 到 pi 之间。
math.acosh(x) 返回 x 的反双曲余弦值。
math.asin(x) 返回 x 的反正弦值,结果范围在 -pi/2 到 pi/2 之间。
math.asinh(x) 返回 x 的反双曲正弦值。
math.atan(x) 返回 x 的反正切值,结果范围在 -pi/2 到 pi/2 之间。
math.atanh(x) 返回 x 的反双曲正切值。
math.ceil(x) 将 x 向上舍入到最接近的整数
math.cos() 返回 x 弧度的余弦值。
math.cosh(x) 返回 x 的双曲余弦值。
math.degrees(x) 将角度 x 从弧度转换为度数。
math.erf(x) 返回一个数的误差函数
math.erfc(x) 返回 x 处的互补误差函数
math.exp(x) 返回 e 的 x 次幂,Ex, 其中 e = 2.718281... 是自然对数的基数。
math.fabs(x) 返回 x 的绝对值。
math.factorial(x) 返回 x 的阶乘。 如果 x 不是整数或为负数时则将引发 ValueError。
math.floor() 将数字向下舍入到最接近的整数
math.gamma(x) 返回 x 处的伽马函数值。
math.gcd() 返回给定的整数参数的最大公约数。
math.hypot() 返回欧几里得范数,sqrt(sum(x**2 for x in coordinates))。 这是从原点到坐标给定点的向量长度。
math.isfinite(x) 判断 x 是否有限,如果 x 既不是无穷大也不是 NaN,则返回 True ,否则返回 False 。
math.isinf(x) 判断 x 是否是无穷大,如果 x 是正或负无穷大,则返回 True ,否则返回 False 。
math.isnan() 判断数字是否为 NaN,如果 x 是 NaN(不是数字),则返回 True ,否则返回 False 。
math.isqrt() 将平方根数向下舍入到最接近的整数
math.lgamma() 返回伽玛函数在 x 绝对值的自然对数。
math.log10(x) 返回 x 底为 10 的对数。
math.log1p(x) 返回 1+x 的自然对数(以 e 为底)。
math.log2(x) 返回 x 以 2 为底的对数
math.prod(iterable) 计算可迭代对象中所有元素的积。
math.radians(x) 将角度 x 从度数转换为弧度。
math.sin(x) 返回 x 弧度的正弦值。
math.sinh(x) 返回 x 的双曲正弦值。
math.sqrt(x) 返回 x 的平方根。
math.tan(x) 返回 x 弧度的正切值。
math.tanh(x) 返回 x 的双曲正切值。
math.trunc(x) 返回 x 截断整数的部分,即返回整数部分,删除小数部分
math.e 返回欧拉数 (2.7182...)
math.inf 返回正无穷大浮点数
math.nan 返回一个浮点值 NaN (not a number)
math.pi π 一般指圆周率。 圆周率 PI (3.1415...)
math.tau 数学常数 τ = 6.283185...,精确到可用精度。Tau 是一个圆周常数,等于 2π,圆的周长与半径之比。
模块常量
数学模块
Math
查看 pip 版本
pip --version
安装
pip install some-package-name
移除某个包
pip uninstall some-package-name
查看安装的包
pip list
是一个集成的数据科学和机器学习环境、更方便地在不同环境之间进行切换,环境管理较为简单
Anaconda
扩展
pip命令
a + b
加法
seq1 + seq2
字符串拼接
obj in seq
包含测试
a / b
除法
a // b
a & b
按位与
a ^ b
按位异或
invert(a)
~ a
按位取反
a | b
按位或
a ** b
取幂
a is b
标识
a is not b
obj[k] = v
索引赋值
del obj[k]
索引删除
obj[k]
索引取值
a << b
左移
a % b
取模
a * b
乘法
a @ b
矩阵乘法
neg(a)
- a
取反(算术)
not_(a)
not a
取反(逻辑)
pos(a)
+ a
正数
a >> b
右移
seq[i:j] = values
切片赋值
del seq[i:j]
切片删除
seq[i:j]
切片取值
s % obj
字符串格式化
a - b
减法
truth(obj)
obj
真值测试
a < b
比较
a <= b
a == b
相等
a != b
不等
a >= b
a > b
比较模块
operator
发送 DELETE 请求到指定 url
reponse . headers
头部信息
reponse . content
内容
reponse . status_code
reponse . text
apparent_encoding 编码方式
close() 关闭与服务器的连接
content 返回响应的内容,以字节为单位
cookies 返回一个 CookieJar 对象,包含了从服务器发回的 cookie
elapsed 返回一个 timedelta 对象,包含了从发送请求到响应到达之间经过的时间量,可以用于测试响应速度。比如 r.elapsed.microseconds 表示响应到达需要多少微秒。
encoding 解码 r.text 的编码方式
headers 返回响应头,字典格式
history 返回包含请求历史的响应对象列表(url)
is_permanent_redirect 如果响应是永久重定向的 url,则返回 True,否则返回 False
is_redirect 如果响应被重定向,则返回 True,否则返回 False
iter_content() 迭代响应
iter_lines() 迭代响应的行
json() 返回结果的 JSON 对象 (结果需要以 JSON 格式编写的,否则会引发错误)
links 返回响应的解析头链接
next 返回重定向链中下一个请求的 PreparedRequest 对象
ok 检查 \"status_code\" 的值,如果小于400,则返回 True,如果不小于 400,则返回 False
raise_for_status() 如果发生错误,方法返回一个 HTTPError 对象
reason 响应状态的描述,比如 \"Not Found\" 或 \"OK\"
request 返回请求此响应的请求对象
status_code 返回 http 的状态码,比如 404 和 200(200 是 OK,404 是 Not Found)
text 返回响应的内容,unicode 类型数据
url 返回响应的 URL
reponse = requests.get(url)
发送 GET 请求到指定 url
发送 HEAD 请求到指定 url
发送 PATCH 请求到指定 url
发送 POST 请求到指定 url
发送 PUT 请求到指定 url
向指定的 url 发送指定的请求方法
requeset
初始化随机数生成器
seed()
返回捕获生成器当前内部状态的对象。
getstate()
state 应该是从之前调用 getstate() 获得的,并且 setstate() 将生成器的内部状态恢复到 getstate() 被调用时的状态。
setstate()
返回具有 k 个随机比特位的非负 Python 整数。 此方法随 MersenneTwister 生成器一起提供,其他一些生成器也可能将其作为 API 的可选部分提供。 在可能的情况下,getrandbits() 会启用 randrange() 来处理任意大的区间。
getrandbits(k)
randrange()
返回随机整数 N 满足 a <= N <= b。
从非空序列 seq 返回一个随机元素。 如果 seq 为空,则引发 IndexError。
choice(seq)
从 population 中选择替换,返回大小为 k 的元素列表。 如果 population 为空,则引发 IndexError。
将序列 x 随机打乱位置。
返回从总体序列或集合中选择的唯一元素的 k 长度列表。 用于无重复的随机抽样。
范围内的下一个随机浮点数。
返回一个随机浮点数 N ,当 a <= b 时 a <= N <= b ,当 b < a 时 b <= N <= a 。
uniform()
返回一个随机浮点数 N ,使得 low <= N <= high 并在这些边界之间使用指定的 mode 。 low 和 high 边界默认为零和一。 mode 参数默认为边界之间的中点,给出对称分布。
Beta 分布。 参数的条件是 alpha > 0 和 beta > 0。 返回值的范围介于 0 和 1 之间。
指数分布。 lambd 是 1.0 除以所需的平均值,它应该是非零的。
expovariate(lambd)
Gamma 分布( 不是伽马函数) 参数的条件是 alpha > 0 和 beta > 0。
gammavariate()
正态分布,也称高斯分布。 mu 为平均值,而 sigma 为标准差。 此函数要稍快于下面所定义的 normalvariate() 函数。
对数正态分布。 如果你采用这个分布的自然对数,你将得到一个正态分布,平均值为 mu 和标准差为 sigma 。 mu 可以是任何值,sigma 必须大于零。
正态分布。 mu 是平均值,sigma 是标准差。
冯·米塞斯分布。 mu 是平均角度,以弧度表示,介于0和 2*pi 之间,kappa 是浓度参数,必须大于或等于零。 如果 kappa 等于零,则该分布在 0 到 2*pi 的范围内减小到均匀的随机角度。
帕累托分布。 alpha 是形状参数。
paretovariate(alpha)
威布尔分布。 alpha 是比例参数,beta 是形状参数。
随机模块
Random
计算给定数据集的调和平均值
statistics.harmonic_mean()
计算数据集的平均值
statistics.mean()
计算数据集的中位数
statistics.median()
计算给定分组数据集的分组中位数
statistics.median_grouped()
计算给定数据集的高位中位数
statistics.median_high()
计算给定数据集的低位中位数
statistics.median_low()
计算数据集的众数(出现频率最高的值)
statistics.mode()
计算给定数据集的样本标准偏差
statistics.pstdev()
计算数据集的标准差
statistics.stdev()
计算给定数据集的样本方差
statistics.pvariance()
计算数据集的方差
statistics.variance()
计算数据集的分位数,可指定分位数的数量(默认为四分位数)
statistics.quantiles()
提供了许多基本统计计算的函数、可以帮助我们分析和计算数据集的统计特征
statistics
二进制表示哈希值
digest()
十六进制表示哈希值
hexdigest()
hashlib . md5(b\"字符串\")
md5(不安全)、sha1(不安全)、sha224(低)、sha256(中等)、sha512(高)、sha384(高)、sha3_224(高)、sha3_256(高)、sha3_512(高)、sha3_384(高)、shake_128(高)、shake_256(高)
提供了常见的哈希算法的实现
hashlib
是一个功能强大的开源数据处理和分析库,专门设计用于高效地进行数据分析和操作
Pandas
是一个用于获取金融数据的库,支持从 Yahoo Finance 获取股票、指数和其他金融市场数据
yfinance
是一个二维绘图库,用于创建静态、动态和交互式的数据可视化图表
Matplotlib
pip install pandas yfinance matplotlib
1.根据股票代码、开始时间和结束时间下载数据
data.head()
2.展示
plt.title(f\"{symbol} Stock Price\")
plt.xlabel(\"Date\")
plt.ylabel(\"Price\")
plt.legend()
plt.show()
绘制股票走势图
3.可视化
下载包
量化
pip install pyecharts
$ git clone https://github.com/pyecharts/pyecharts.git$ cd pyecharts$ pip install -r requirements.txt$ python setup.py install# 或者执行 python install.py
源码安装
数据可视化库
pyecharts
进阶
Python进阶
0 条评论
回复 删除
下一页