【有书共读21】Python编程之美 05-02


  • Requests
对python标准库中的urllib和httplib进行扩展,提供一些执行http的请求方法。支持国际化域名、url、自动解压缩、内容编码自动识别、浏览器风格的SSL验证,http(s)***支持及其他功能特性。

requests简单交互


requests模块
1.api.py:实现Requests API
2.hooks.py:提供Requests的hooks system的能力
3.models.py:包含支撑Requests 的一些主要对象
4.sessions.py:提供一个Session对象来管理和保持跨请求的一些设置(cookie、认证、网络***)
5.auth.py:包含一些Requests身份认证的处理器
6.status_codes.py:状态名到状态码的映射查找表
7.cookie.py:兼容性代码,让请求能够使用cookielib.CookieJar
8.adapters.py:包含传输适配器,Requests用它来定义和维护连接
9.exceptions.py:包含所有Requests异常
10.structures.py:支撑Requests一些数据结构
11.certs.py:返回首选的默认CA证书包,其中罗列了受信任的SSL证书
12.utils.py:提供一些Requests内部使用的工具函数,也适用于外部使用。

Requests结构示例
1.顶级API:定义在api.py的函数均以HTTP请求方法。
2.Request和PrepareRequest对象:
requests.Request的数据属性是直接暴露的,直接访问request-instance.headers即可获取或者设置请求头
PrepareRequest对象初始化时,数据属性是空的,需要调用prepared-request-instance.prepare()来填充相关数据。

Requests风格示例
集合和集合运算:一个优雅的符合python风格的习语。


状态码:增强可读性很重要。status_codes.py创建对象,通过对象的属性查找对应状态码。



  • Werkzeug
Werkzeug中的工具程序都与WSGI相关。
WSGI是python中web应用程序与服务器程序之间交互的接口。规定了web服务器与python应用程序与框架进行的通信的方式。
1.服务器程序每次接收HTTP请求(post/get)时,会调用应用程序。
2.应用程序返回一个可迭代的字节字符串,服务器程序以该字节字符串相应HTTP请求
3.应用程序将会接收两个参数,如webapp(environ,start_response)

Werkzeug实现了一个werkzeug.Client类,用于做一次性测试时替代真实的web服务器程序。

Werkzeug风格示例
1.猜测数据类型的优雅方法:对于实现易于解释,是一个好方式
2.正则表达式:增强可读性

Werkzeug结构示例
1.基于类的装饰器:符合python风格的动态类型使用方式。
2.混入类:用于向一个类添加特定功能(一组相关属性)的类。python允许多继承,支持同时继承多个不同的类的范式,可以模块化地将不同的功能封装到不同类中。
Werkzeug最大用处:告诉用户哪些函数是相关的,哪些是不想关的。


  • Flask
Flask整合了Werkzeug和Jinja2的web微框架。Flask的目标是创建web应用程序,与Diamond和HowDoI命令行因公程序大不相同,Flask通过运行flask示例应用,使用调试器来单步调试Flask。

Flask日志记录
Diamond默认配置一个日志记录器,示例在应用中如何进行日志记录;
Flask是在库中提供一个日志记录模块。

Flask风格示例
1.Flask路由装饰器:将URL路由添加到目标函数上。
@app.route('/')
def index():
pass

分发请求时,Flask使用URL路由找到哦啊正确的函数,生产响应结果。装饰器将路由代码逻辑分离在目标函数之外,保持函数结构扁平,直观。

Flask结构示例
1.应用特定的默认:Flask是一个web应用开发框架,底层依赖Werkzeug专为WSGI应用开发而设计的通用工具库。其目的是给Flask添加恰当的默认值。
2.模块化:flask.werkzeug.Response文档字符串可以继承Response对象并在Flask主对象中适用新定义的类。



#Python#
全部评论

相关推荐

狸猫换offer:神通广大的互联网
点赞 评论 收藏
分享
02-25 09:55
已编辑
门头沟学院 Java
2.4 一面2.6 二面2.9 三面(hr面)2.13 oc1.15号收到面试电话那会就开始准备,因为一开始没底所以选择推迟一段时间面试,之后开始准备八股,准备实习可能会问的东西,这期间hot100过了有六七遍,真的是做吐了快,八股也是背了忘,忘了背,面经也看了很多,虽然最后用上的只有几道题,可是谁知道会问什么呢自从大二上开始学java以来,一开始做外卖,点评,学微服务,大二下五六月时,开始投简历,哎,投了一千份了无音讯,开始怀疑自己(虽然能力确实很一般),后来去到一家小小厂,但是并不能学到什么东西,而且很多东西都很不规范,没待多久便离开,大二暑假基本上摆烂很怀疑自己,大三上因为某些原因开始继续学,期间也受到一俩个中小厂的offer,不过学校不知道为啥又不允许中小厂实习只允许大厂加上待遇不太好所以也没去,感觉自己后端能力很一般,于是便打算转战测开,学习了一些比较简单的测试理论(没有很深入的学),然后十二月又开始继续投,java和测开都投,不过好像并没有几个面试,有点打击不过并没有放弃心里还是想争一口气,一月初因为学校事比较多加上考试便有几天没有继续投,10号放假后便继续,想着放假应该很多人辞职可能机会大一点,直到接到字节的面试,心里挺激动的,总算有大厂面试了,虽然很开心,但同时压力也很大,心里真的很想很想很想进,一面前几天晚上都睡不好觉,基本上都是二三点睡六七点醒了,一面三十几分钟结束,问的都不太难,而且面试官人挺好但是有些问题问的很刁钻问到了测试的一些思想并不是理论,我不太了解这方面,但是也会给我讲一讲他的理解,但是面完很伤心觉得自己要挂了。但是幸运的是一面过了(感谢面试官),两天后二面,问的同样不算难,手撕也比较简单,但也有一两个没答出来,面试官人很好并没有追问,因为是周五进行的二面,没有立即出结果,等到周一才通知到过了,很煎熬的两天,根本睡不好,好在下周一终于通知二面过了(感谢面试官),然后约第二天三面,听别的字节同学说hr面基本上是谈薪资了,但是我的并不是,hr还问了业务相关的问题,不过问的比较浅,hr还问我好像比较紧张,而且hr明确说了还要比较一下,我说我有几家的面试都拒了就在等字节的面试,三面完后就开始等结果,这几天干啥都没什么劲,等的好煎熬,终于13号下午接到了电话通知oc了,正式邮件也同时发了,接到以后真的不敢信,很激动但更重要的是可以松一口气了,可以安心的休息一下了终于可以带着个好消息过年了,找实习也可以稍微告一段落了,虽然本人很菜,但是感谢字节收留,成为忠诚的节孝子了因为问的比较简单,面经就挑几个记得的写一下一面:1.实习项目的难点说一下2.实习中用到了哪些测试方法3.针对抖音评论设计一下测试用例4.手撕:合并两个有序数组二面:1.为什么转测开2.线程进程区别,什么场景适合用哪个3.发送一个朋友圈,从发出到别人看到,从数据流转的角度说一下会经历哪些过程4.针对抖音刷到广告视频设计测试用例5.手撕:无重复字符的最长字串
厂办龚彪:锲而不舍 金石可镂
查看8道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务