我与python的十年(上)
从08年刚接触python到现在已经十多年的光景了,始终贯穿着我的工作跟学习,不管出现再多的语言,出现再多的技术,我对python总是有一种割舍不掉的感情。
刚开始接触python是因为,读书的时候想找到一门与众不懂的语言,显得自己比较厉害。就是那种想在一干同学面前 嘚瑟一下,觉得我比你们厉害。你们就会php java .net, 我会一种你们都没玩过的。也并没有想过这门语言有什么与众不同,更无法预计它在十年后的今天能登顶语言排行榜。
当时学习的时候就是windows下面玩应该是2.7的版本,下载完之后就去搜索下如何写代码以及执行,就照着网上的教程打开了python的interactive环境,那时候根本不知道什么叫交互环境,也不知道什么叫repl。
仅仅明白有个窗口能让我写代码,然后试着输入我们学语言的第一课,在屏幕上打印一个hello world。怯生生的在命令行入了 print(“hello world”), 下面就显示了 ”hello world” 。好神奇啊,不用写main函数就能执行。
随后就是开始输入 1+2 这种算数表达式之类的东西,马上都能快速的给出执行结果,觉得很有意思,试着去写个 if(true) {print(“hello world”)}这种选择结构,写完了突然发现执行不了,给我报一堆红色错误提示,去搜索了下发现python的语法不是这么写的,是靠的是缩进来控制结构的。不需要花括号,试着缩进了发现好用,紧接着想改改我写的if 里面的输出 为 hello world ly, 发现没法改,一着急就把命令行环境给关了,重新打开再写。
来来回回这样太累,就在想其他语言我记得都是写代码在文本里面啊,难道python只能这样运行不应该。于是扒拉文档,发现原来python还有一种执行模式,运行脚本文件的,是可以把代码写到一个后缀为py的文件当中,然后随时可以修改它,就可以各种尝试自己的代码执行结果,当时的idle也就是python官方自带编辑器长这样。

随后就开始了各种尝试python代码的折腾,从定义变量,还是它里面内置的数据类list/dict/tuple/queue,到学习它的控制结构 if while这些, 还有异常处理 try exception else到学习定义函数,使用内置的函数。
这些个断断续续学了个把月,基本的觉得都掌握了, 就想着我学python能干什么,去网上找,发现python大家都说可以做爬虫。试着找了网上一些爬虫例子,开始研究发,发现有些代码能看懂,有些看不懂,不管了先拿下来跑下看看,结果黏贴下来的并不能用。
主要是python的缩进问题,然后硬着头皮把缩进改好,URL换成自己想爬的网页,跑了一下果真网页下来了。然后就去仔细看了里面的代码,发现里面有些import语句不懂是干嘛的,一查才知道这个是用来导入你想用的python模块,又学会一招。
2010年就开始工作了工作内容主要是用的.net,python也根本用不上。随后的一两年里面就是,每天瞎看看python,然后找网上的例子去练。这个阶段其实更多的是,熟悉python的语法查漏补缺,并没有真正把python用到实际的项目中。
期间我写了一个爬公司网站图片的爬虫,当时在做做电商业务,页面很多鞋子的照片,就想写个简单爬虫爬着玩玩,就把图片爬下来放在磁盘里,爬取得是固定网页的内容。不会整站的爬,没有那种思维,这个时期的我基本上不会碰到,那种缩进出现的简单语法问题了。不过时间太久了,我已经找不到我的这段代码,庆幸我找到了当时下载百度音乐的一段代码,彼时百度音乐还在。

一晃眼到了2012年了,去了一家做公司做bi分析.公司有个需求,每天从固定的地方下载日志,然后进行分析入库。脑子一闪这玩意应该可以用python搞吧,征询了老大的同意。我就网上查资料如何使用python下载ftp文件,研究如何使用python去登陆ftp,切换路径下载文件解压文件这些操作对应的库函数等。
这些都写完了,后续日志需要被一jar执行,这是一个如何fork 与 exec的问题,脑子里想到c里面有这些系统调用,那python里面应该也有,找到了python的os模块里面的system方法。于是乎整个都顺了,最后把整个调度的流程用python写了下来,这段代码我也还留着。

当时也没有python name convention的这种概念,就是先写出来,这中间还学会了自己定义包/模块的,不是把所有代码都写到一个文件里面,比如上面自己定义了一个模块用于发邮件,一个py的package,写了个sendmail的module,也明白了 python的每个文件是一个module,多个module可以放在一个package也就是一个文件夹下,目的还是用于代码隔离,代码重用这些基本的编程概念,其他语言也都有,下面就是我写得sendmail模块下的sendhtml函数

当时写完这个一直跑在线上,也算是我第一个正式用于生产的python项目。还是挺开心的然后觉得学有所用。除了写脚本做一些这种任务之外,我也关注了python如何去写web程序,当时学了很有名的tornado,就按照官网文档自己瞎玩,写Helloworld或者写一个表单之类的。
13年突然有一天公司一个运营的小伙儿,去注册微信公众账号。需要去搭建一个服务用于微信的验证,老大就让他找了我,接到这个任务时候,就想到一个服务器那python很方便,聊明白他的需求之后,去查了微信的文档然后照着文档,在服务器上面来了一个麻雀版的验证服务器,很快就让他注册成功了,这段代码我也保留着。

搞了这么三年多基本的python掌握了也算是入了门了,就去考虑把python应用到更多的地方,也顺带的提升自己的python能力促进开发。其实这个阶段我也认真的去看了一本书,中文名python核心编程,英文名《core python programming》也就是写这篇文章的时候,我还在回过头看这本书的英文版,就是下面的这本书,准备再次好好的梳理下自己的python知识,里面介绍python的知识点很全面,配合官方的manual,你如果坚持读下来应该比我厉害。

未完待续......