- A+
如果你学过其他的语言,再学 Python 将会让你的技能树大大地拓宽,有能力涉足更多的领域。
学习编程从入门到放弃的人不计其数,很大程度上是因为,产出和投入的精力完全不成正比。
而学习 Python,几行代码就可以实现一个爬虫,几个函数就可以做简单的数据分析,写一个小工具、小游戏也是分分钟的事情……这种成就感,会激发你最原始的兴趣。
那如何系统学习Python呢?一般我们会经历以下几个阶段。
01 了解 Python 编程基础
一是变量、编程规范、基础语法等,这也是能够上手编写 Python 代码的前提。
二是数据结构,字符串、列表、字典、元组这些需要非常熟练,数据类型将贯穿你整个编程的始终。
这个部分一些简单的练习就是,自己构造一个数据类型,然后去实现基本的用法。比如你自己构造一个列表,实现列表中数据的访问、更新、删除等基本操作,比如 len()、max()、min() 函数,以及 append()、count()、extend() 等方法。
函数和方法是实现数据增删改查的基本途径,如果你在实际操作中遇到数据操作的问题,可以在具体的数据类型下查找相关用法。
02 Python函数及流程控制
学习 Python 的函数和控制语句,是真正去解决问题的过程。如何实现判断和循坏,如何将固定的功能模块封装成函数,这些不仅是写出代码的必要条件,也是训练编程思维的必经之路。
函数这个部分无外乎函数的定义、函数调用以及参数传递,但是要能够娴熟地写出函数实现对应的功能,需要注意的细节很多,也需要不断地训练。
流程控制则相对要好掌握一些,条件语句和循坏语句在不同的场景下练习几遍,知道判断和循环实现的过程,基本上就没问题了。
其实到这个地方,基本的Python知识你已经掌握了,你可以自己去做一些小项目,比如猜数字、各种转换器、记账工具……
03 利用 Python 做些事情
通常在学习一段时间之后,你就会有自我怀疑的过程,貌似真的懂了,但是离做出实际的东西又很远,这些东西是否有用?
这个时候不妨了解一些第三方库,你可以做更多的事情。比如用pandas作数据处理,用matplotlib做数据可视化分析,用BeautifulSoup写爬虫,利用Flask搭建网站……这些别人搭好的轮子,你直接拿来用就可以了。当然像写爬虫和网站,你还需要了解其他方面的一些知识(比如HTTP、HTML、JS、数据库等)。
对于不同的库,内部的方法、函数你还需要去熟悉,开始的时候先掌握少部分最常用的方法,在遇到实际的问题的时候,再去查对应的更多的用法,这样会更高效。
04 深入 Python 编程
其实第三个阶段反复练习实践,你已经基本具备一些工作的技能了,比如 Python 数据分析、网络爬虫、写工具脚本……
首先你要了解Python的高级特性,如迭代器、生成器、装饰器等,了解类和面向对象的理念。深入下去,你可以去探索Python的实现原理,Python的性能优化,跳出Python语言本身,去了解计算机的交互原理,还有很长的路要走,但并不是每一个人都需要这个过程。
但这些高屋建瓴的东西,又是你在这个领域立足生根的重要条件,对于坚定走技术方向的人来说,这个过程是有必要的。这个时候你再去做应用层面的一些东西,又会有更加深刻的理解。
总结下来,学习Python,最常见的坑有这些:
1.很难找到合适且优质的学习资源,难以下手,或者随便找一些材料开始学习,极其容易从入门到放弃;
2.遇到问题不知道如何寻找解决办法,甚至连问题都描述不清楚,经常被一些细小的问题卡住,学习效率不高;
3.在理论学习中无法自拔,学习很久之后,发现还是不知道如何在实际的项目中去应用,缺乏解决问题的能力;
4.看到别人的案例觉得好像是那么回事,但是自己去写代码的时候依然很困难,无法训练编程思维。
文末小题摘要①:Python 推出新的 PyPI 网站,旧 PyPI 于 4 月 30 日关闭
PyPI 团队的成员 Sumana Harihareswara 发表博客表示,Python 已推出新的 PyPI 网站(Python 的官方第三方软件存储库),浏览器流量和 API 调用(包括"pip install")已从旧版 pypi.python.org 重定向到新网站,而旧的 PyPI 网站将于 4 月 30 日关闭。
不过现在旧的代码库在 https://legacy.pypi.org 上仍然可用。
目前,权威的 PyPI(Python Package Index) 地址是:https://pypi.org/,使用了新的 Warehouse 代码库。
https://pypi.org 测试版早于 3 月 26 日已提供,到 4 月 16 日正式推出,而旧的 PyPI 网站 https://legacy.pypi.org 则计划于 4 月 30 日关闭,pypi.python.org 则继续重定向至新网站。
有关更多详细信息,请参阅路线图:https://wiki.python.org/psf/WarehouseRoadmap
如果你仍在使用 pypi.python.org,现在开始应该迁移至使用 pypi.org,迁移指南:https://warehouse.readthedocs.io/api-reference/integration-guide/#migrating-to-the-new-pypi
文末小题摘要②:Python开源项目推荐:跨平台批量运维小工具batch_ops
batch_ops是一个用Python实现的跨平台批量运维小工具。通过它可以执行远程命令/上传下载文件。它基于yaml配置文件可灵活指定操作单位:host(s)或hostgroup(s);基于多线程可实现多主机并行;基于docopt提供详细的命令行界面。
特点:
-
完善的命令行提示,比较优雅的输出
-
基于yaml的配置文件,实现灵活的对主机或主机组的操作
-
支持多线程并发执行
-
批量执行支持忽略某个(些)节点的错误
-
传输文件实现了类似rsync的机制
-
跨平台,支持Linux和Windows
依赖和实现思路:
-
包依赖:docopt(0.6.2),paramiko(2.4.0),pyyaml(3.12)
-
将主机组以及主机(格式 name:ip:port)信息写进yaml配置文件,以便灵活选取操作目标
-
paramiko 模块实现远程命令和sftp客户端功能。
-
要同时支持并行和串行:抽象出多线程模型,将串行视为多线程中只有一个线程的特例,解决多线程输出乱序问题
-
文件传输功能:由于ssh的sftp子系统只支持单个文件传输,所以需要以递归思想传输目录;尽量减少无谓通信;基于两端文件的mtime和size判断是否需要传输
-
当过程遇到错误时,发送信号给主线程,对于还未开启的线程,则不再开启;对于以开启的线程,等待其完成(这里以任何一种方式将其杀死,都不好阻止其在远程已经开使的命令)
使用说明
帮助信息:
批量执行远程命令: 以主机组为单位批量执行远程命令
上例也可以主机为单位批量执行
也可以通过--parallel参数实现并发执行
也可通过--skip-err参数忽略批量执行中的错误
关于--skip-err: 不提供此参数时 串行情况下:遇到错误便退出,不会继续在后续的主机上执行命令 并行情况下:对于还未开启的线程(一个线程对应一个主机),则不再开启;对于以开启的线程,等待其完成(或报错)
上传:
下载:
希望能对大家有所帮助。
* 免责声明:转载文章和图片均来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。