Python日常小记 - 关于Python的碎碎念
我用Python的一些感受
Python初体验
最早接触Python还是在当年下载虎扑相册的时候,大概是14年吧。看到有个大神传了1000张无码getty原图到虎扑相册,全网独一份,忍不住就要收图。那时候几乎不会编程,只会点vb,c还是初学者,更别说Python了。只是装上Python2.73,运行了一下人家的脚本,哇塞图都下下来了耶,好棒!自己考虑用C用VB,根本不可能实现这些功能嘛……于是最初这条绿蟒蛇在我心目中留下了不错的印象。
最早自己着手改Python发生在8个月以后。这时我头一次完成一个整体的基于C的数据库系统设计(弱鸡大作业),也对编程稍微有了点感觉:我这辈子一定不能干天天编程的工作。不是不喜欢编程,而是不喜欢用范例去编程。这在业界就很难混了。我喜欢天马行空的解决方案,有什么工具就用什么工具,而不是按部就班借轮子造轮子地流水线作业。
比如,就拿今天20160906的例子来说吧。想改一个.xps文件,我设计了如下步骤:
- 改文件后缀名为zip
- 解压缩
- 切换至特定目录
- 定位至文本文件特定行匹配条件为“应用物理学”
- 修改字符串为应用物理学xx班,调整字符串前某标签字符串为127
- 关闭文件并压缩
- 改变压缩文件后缀为xps
这个流程用Python解决非常容易,不过是调试需要花一点时间罢了。而我不愿迁就,宁可录制一个按键精灵来自动化该流程也不愿意写脚本。吐
因为对效率的轻视,我总是抱着“问题只要理论上在天荒地老前能够解决,就相当于已经解决”的思想。其实滑稽之极(#滑稽)。生产中最重要的或许就是效率了,正所谓时间就是金钱,写个程序比人家跑得慢可能就要倒闭的……扯远了。这种轻视效率的做法对于个人的一些解决方案还是可行的。例如之前用MATLAB跑串口通信,完全是因为我对MATLAB熟悉。纵使效率低下,其仍旧节省了我学习一门新的语言了解其特性的时间,达成了一个暂时的目的便已足够。
太远了,我的第一个改过的Python程序是一个基于pygame库的GUI程序(你敢信?)主要就是重新定义了一下一些元素的位置、样式和点击的逻辑。由于没有什么语法方面的问题,感觉并不是真正的Python编程。
第一个独立Python项目
2015年有一段时间论坛一下子出现了好几个爬虫相关的求助帖。这时候我重新认识了Python在网页方面的强大第三方支持。
比如urllib、request、beautifulsoup、selenium、ghost(.py)等等。这些别人做好的工具自己拿来用很顺手,虽然不会让你得到如用C手写网络爬虫一样的锻炼,却能高效完成任务,这就足够了。
第一个需求来自于一场NFL赛后。曼宁发挥并不好,但伟大的橙色军团为Mile High带来了又一场胜利。这种时候要是有点高清图来收藏就更好了!于是我找来找去,竟然发现官网的图库质量就不错。二话不说收图!
然而,之前的所有收图我都是通过手动的方式完成的:先获取页面内所有图片链接,然后用迅雷下。有时还需要用宏录制和正则匹配替换来修改图片的url。而这次我决定是时候造个适合自己的轮子了。因为今后我将不止一次用这个工具啊,现在研究一下成本均摊下来并不高。
具体参考这篇博文。
总之,这是我第一个从头到尾自己写的程序,尽管还是调库调函数,但基础的一些东西了解了一些。
越是了解Python这门语言,就越觉得它很方便。以前很多时候手动干起来很累的事,Python写几行代码便能轻而易举实现。它第一次令我感受到:或许写代码的时间和东拼西凑达成一个目标所需的时间可以比拟。
2016年上半年对Python的使用
我的Python入门路径主要分为了三段:用Python下图、用Python自动化和用Python解决小问题。 首先是下图,目前有nfl官网,nba官网和pokemon wiki三个站点的跑图经历,特点各不相同但也有相似之处。
其次是自动化,主要就是selenium。因为不懂如何处理cookies中的诸多字段,以及post和get各种请求的顺序,索性让浏览器自己解决啦。异步加载什么的完全没有问题。用它怼了一次大创投票系统刷票来着,虽然最后取消了但还是刷成了,没毛病!
最后是一堆杂七杂八的工具,比如生成目录下文件路径,生成缩略图啥的……用到就写,能跑就行。
体会
首先是Python的“类自然语言”特性,非常适合入门。程序不知道怎么写?英文句子怎么写,把单词间用点和括号隔开就是程序。
其次是其丰富的扩展,太方便了。任何能够归纳成大类问题的需求都能满足,不得不称赞这门年轻语言的活力。
另外就是流行程度,上至科研人员下到从未接触编程的文科从业者,都能轻易找到属于他们的合适方案,如此广泛的应用场景,不得不说它实在太流行了。
有这么多好处,又有哪些别扭的地方呢?
首先是Python2和3的更替。很多基础的语法都有调整,这让项目重构起来不太方便啊。旧笔记本的环境是Py2.7,新台式机的环境是Py3.5,每次换电脑干活就感觉很麻烦……
其次是中文字符问题,其实不是问题啦,但始终不够简洁。理想中应该是任何语言字符都能一视同仁处理,而不是各种错综复杂字符集和编码方式。不如全局utf8吧(windows记事本ANSI不乐意了)。
还有,Python在windows上有点水土不服,这从反斜杠的故事和easy_install update pip上就能看出。
总而言之,Python为我的学习生活助力,帮我解决了很多用别的已知的工具解决起来比较麻烦的、棘手的问题。倘若有充足的时间(明年春天),我或许会考虑由浅入深了解一下Python啦。当然C#的意见也是很重要的。也要按照基本法
Leave a Comment