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

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了假装Python高手,把类这样改,真刺激!脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

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

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

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

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

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

1.开始撸代码

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

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

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

2.封装成类

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

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

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

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

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

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

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

>

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一样灵活方便的,你好好想想吧。

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

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

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

运行一下看看:

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

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

4.进阶高手

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

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

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

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

>

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,请注明来意。