栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

假装Python高手,把类这样改,真刺激!

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

假装Python高手,把类这样改,真刺激!

Python学了好几年 发现功力还是那样 很多同学经常这样抱怨 都说Python入门容易 精通难 确实是这样的 每当我们打开一些牛逼的源码框架 进去看窥探大牛的源码 比如Python里面非常著名的Django和Flask里面的源码 发现跟天书一样。

今天我们来说一个非常实用的例子 小菜接到组长老王的一个任务 安排一个新的活 这个活是这样的

老王 小菜啊 你帮我写一个ssh登入脚本 跑十几条命令到服务器上 然后存一下日志。

小王 哇 这活简单啊 so easy 分分钟搞定啊 这不就是一个登入服务器的命令吗

小王思考了0.08秒 写下来猥代码

1.开始撸代码

这个活很简单 于是非常简单的想到了用Python里面的paramiko模块 直接分分钟搞定。

小菜分分钟就写完了代码 豁然觉得有点不对 这样交差是不是有点过分 怎么说自己也学了2年Python 这代码完全没有封装啊。不行不行 有点太 菜 了 不行 我要装高手一点 于是赶紧写了第二版。

2.封装成类

上面的代码太简单的了 简直就是原型机器 于是小菜用类去封装了一下 改进了一下。

设计了一个SSHClinet类 把一些用户名/密码/主机地址/端口都封装到类的属性里面 然后设计了connect函数去进行连接 如果出现异常就进行处理。然后所有的日志记录都存到双向队列history里面。

然后我们跑到服务器上执行命令 并把处理的结果stdout结果进行简单的处理 存储到history里面。当然把读取histroy和关闭链接close()也做了封装。

这个时候 小菜偷偷的瞄了一眼组长老王 常舒一口气 总于写完了。然后跑一下看看吧。

Dump the command history...

{ pwd : /root }

{ date : Mon Sep 20 16:09:19 CST 2021 }

Close ssh connection!

跑的没有问题啊 代码也很clean啊 异常都考虑了啊 打完收工

3.啥事带上下文管理器的类

老王过来检查小菜干的活 大概看了1分钟 一脸严肃的说

小菜啊 你知道with的用法吧 为啥家我们在读写文件的时候 都喜欢用with语句 因为方便啊。我们读写文件用with 然后关闭啥的我们都不用关 有with自动帮我处理。比如下面的情况

with open( 菜鸟学Python.txt , w ,encoding utf-8 ) as wf:
 wf.write( 我要好好学Python )

那么我们上面写的SSHClinet类是否也能像with一样灵活方便的 你好好想想吧。

这其实就是带上下文管理器的类 如果构建呢 其实很简单

我们只需要再类里面增加2个魔法函数 一个是__enter__ 一个是__exit__即可,就可以迅速把普通的类山鸡变凤凰。注意enter里面一定要返回类的对象self,否则无法调用run方法。

运行一下看看

是不是非常干净 清爽 我们把主要的逻辑封装到run里面 然后ssh连接服务器和关闭服务器都封到enter和exit里面即可。这样代码也更pythonic。

4.进阶高手

经过上面的讲解 相信大家都明白了 于是小菜若有所思的开始动手修改了原来的代码。把普通的类变成了带上下文管理器的类。

整个的代码80%都跟原来的类似 我们只是增加了__enter和__exit__ 其实就是原来的 connect和close 逻辑部分 但是这样一修改 外边在使用我们这个库的时候就会很简单。


Dump the command history...

{ pwd : /root }

{ date : Mon Sep 20 16:42:00 CST 2021 }

Close ssh connection!

是不是爽多了 高手和菜鸟的区别 在于写完代码之后会思考代码如果优化 如果提高它的扩展性 如果提高它的稳定性 如果这个代码复用 如果这个代码有更多人调用 我应该如何让他使用更简单。

如果你经常写代码的时候问这么多如果 相信总有一天你的coding 功力会大增。欢迎大家在留言区指导工作 记得给个三连哈


 

 

 

 

 

推荐阅读:

入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径

量化: 定投基金到底能赚多少钱   | 我用Python对去年800只基金的数据分析

干货:爬取豆瓣短评 电影《后来的我们》 | 38年NBA最佳球员分析|   从万众期待到口碑扑街 唐探3令人失望  | 笑看新倚天屠龙记灯谜答题王  用Python做个海量小姐姐素描图碟中谍这么火 我用机器学习做个迷你推荐系统电影

趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!

AI: 会做诗的机器人给图片上色 | 预测收入 | 碟中谍这么火 我用机器学习做个迷你推荐系统电影

小工具: Pdf转Word 轻松搞定表格和水印  | 一键把html网页保存为pdf |  再见PDF提取收费  | 用90行代码打造最强PDF转换器 word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器   60行代码做了一个语音壁纸切换器天天看小姐姐

年度爆款文案

1).卧槽 Pdf转Word用Python轻松搞定

2).学Python真香 我用100行代码做了个网站 帮人PS旅行图片 赚个鸡腿吃

3).首播过亿 火爆全网 我分析了《乘风破浪的姐姐》 发现了这些秘密 

4).80行代码 用Python做一个哆来A梦分身 

5).你必须掌握的20个python代码 短小精悍 用处无穷

6).30个Python奇淫技巧集 

7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货 

8).再见Python 我要学Go了 2500字深度分析

9).发现一个舔狗福利 这个Python爬虫神器太爽了 自动下载妹子图片


 

 

 

 

 

 

 

 

 
点阅读原文,领AI全套资料 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/266841.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号