入坑 Python

自从进入公司,到现在也有半年的时间。这半年的时间从 python 到入门到开发了几个小项目,类型涵盖了 web应用 程序、爬虫程序 (scrapy),python脚本工具,自动化工具。对 python 语言也越来越熟悉,当然也有所感悟和总结。首先 Python 真的让语言成 了一个工具,入门代价很小,上手能够开发出小工具,可以更快体验到编程的乐趣。但是做到pythonic 需要更多的学习和使用。

Python 可以胜任各种需求,而且对框架的依赖度不高,多熟悉 python 标准库以及常用第三方库,可以很快构建出解决方案

关于编辑器的选择以及工作流构建

从踏上编程这条路,就一直纠结与编辑器(IDE)的选择,几乎所有主流的文本编辑器和编辑器都尝试了一遍,包括 Sublime Text、 VS Code、SpaceEmacs(Emacs 的改进版)、终端 Vim、编辑器 MacVim、Pycharm 等可以说,一半的精力都在琢磨各种编辑器了, 至于孰优孰劣就不在这里讨论了,各种博客一大堆,也可以看出不止我一个人执着于此。我也不会评判“执着与编辑器”的对错与否,不过 如果有精力,那去玩一遍?只有不断实践,才能够找到自己得心应手的工具吧。

编辑器的选择本质上是对不断调整工作流,这工作流可以是纯终端,通过终端工具构建一整套命令行工作流,可能这真的很Hack,当然 也可以直接选择如 Pycharm 之类的 IDE,用别人一整套工具集也是一种不错的选择。

目前 Sublime Text 以及 SpaceEmacs 已经基本被我抛弃了,编辑器 MacVim 也是偶尔臭美用一下。python 开发主要使用 pycharm,小脚本也会通过 Vim 编辑,前端或者其他文本操作都靠 VScode。不过这里要提一下的是,pycharm 我采用的 vim 的 插件,主要编辑模式就是 Vim 模式。

虽然这三个工具还没完全吃透,但如果没有特殊的情况,这应该这就是我的工作流。不过我建议的话,我觉得就是自己的 pycharm+VScode+vim的工作流了,无论纯开发还是 DevOps 都能轻松驾驭。

关于代码开发规范

代码规范,python 是动态语言,在模块/包正确导入的前提下,它允许任意组织你的代码结构。而鄙人深受框架所害,如 spring 以及 spring boot 等分层框架,觉得那样的代码看着都神清气爽,能给他分开,就给它分开!看着必须清爽,这是我的原则。python 的 代码规范以及工程结构没办法统一,不过还是可以参照一下几个指导,并在实践中不断践行它。

  • PEP8(Python Enhancement Proposals/python 增强建议书):官方规范,由于过于啰嗦我也没有完整读过🤣。
  • Google python 开发规范:大厂出品,必属精品!主要内容包括python语言开发一些建议,包括如何组织你的导入,字符串处理时如 何选择使用‘+’号还是字符串格式化还是通过 john,如何注释等,很短可以反复看。
  • The Hitchhiker’s Guide to Python:如何让你的 python 代码更加优美,提高代码的可读性。必须读一遍。

行动起来

编码能力提高还是要通过不断的编码才能提高,切勿纸上谈兵。对于刚入门的新手,由于无法从项目上手,所以可以通过一些专业的代码 练习网站快速上手,当然国内如leetcode,牛客很多人都很熟悉,但是这些网站往往偏向的是算法、数据结构,而不面向单个语言, 通过这类网站练习,往往效率很高。

这里推荐HackerRank,这个网站的交互和设计很棒,支持VIM编辑模式,最重要的是通过这个网站python专题的练习,你能更加 领会到python这门语言特有的思想,而不需要花费太大经历在算法上。如果你需要算法的练习,那你也可以试试算法专题练习。

遇到问题如何处理

代码报错,怎么办?百度、Google、文档、笔记…这些都是解决方案,没有优劣之分,遇到国内源以及编码问题时,百度才是王道。 不过需要认真考虑和总结的是,应该遵循一个怎样的流程去处理?上来直接啃官方文档,没错你的问题 99%会得以解决,不过通过文档搜 索,对于现在的很 low 的我效率还是很低。所以我会不断改进自己处理问题的流程。 现在基本上是这个流程:首先回顾笔记—-Goo gle(百度)—–文档。 可能我对笔记和文档会更加重视,虽然这并没有错,不过还是有一定的弊端,比如遇到一个问题就去系统的看 它的文档,然后做记录,看着看着又遇到一个问题,于是又去看它的文档…最后场景的就是,chrome 打开一大堆页面,舍不得关闭 ,自己一开始的问题都忘了。这种由于缺乏目的性的学习,效率会很低。