脚本宝典收集整理的这篇文章主要介绍了假装Python高手,把类这样改,真刺激!,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
Python学了好几年,发现功力还是那样,很多同学经常这样抱怨!都说Python入门容易,精通难,确实是这样的,每当我们打开一些牛逼的源码框架,进去看窥探大牛的源码,比如Python里面非常著名的Django和Flask里面的源码,发现跟天书一样。
今天我们来说一个非常实用的例子,小菜接到组长老王的一个任务,安排一个新的活,这个活是这样的F1a;
老王:小菜啊,你帮我写一个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全套资料!
以上是脚本宝典为你收集整理的假装Python高手,把类这样改,真刺激!全部内容,希望文章能够帮你解决假装Python高手,把类这样改,真刺激!所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。