十年感悟之 python之路
本文由 简悦 SimpRead 转码, 原文地址 https://laisky.com/p/python-road/
Changelog:
updated at 2019/9/6
一、概述
本文起源于我在 Twitter 上发布的关于 Python 经历的一系列话题。
出于某些原因,想记录一下我过去数年使用 Python 的经验和一些感悟。 毕竟算是一门把我带入互联网行业的语言,而我近期已经几乎不再写 Py 代码, 做一个记录,也许会对他人起到些微的帮助,也算是纪念与感恩了。
二、摘录
推文地址:https://twitter.com/ppcelery/status/1159620182089728000
最早接触 py 是 2010 年左右,那之前主要是使用 c、fortran 和 matlab 做数值运算。当时在做一些文件文本处理时觉得很麻烦,后来看到 NASA 说要用 py 取代 matlab,就去接触了 py。
python 那极为简洁与优美的语法给了当时的我极大的震撼,时至今日,写 py 代码对我而言依然是一种带有艺术意味的享受。
首先开宗明义的说一句:python 并不慢,至少不够慢。拿一个 web 后端来说,一台垃圾 4 核虚机,跑 4 个同步阻塞的 django,假设 django 上合理利用线程分担了阻塞操作,假设每节点每秒可以处理 50 个请求(超低估),在白天的 10 小时内就可以处理 720 万请求。而这种机器跑一天仅需要 20 块钱。
在学习 Python 以前需要强调的是:基础语法非常重要。虽然我们都不推崇过多的死记硬背,但是少量必要的死背是以后所有复杂思维活动的基础,就像五十音对于日语,通假字和常用动名词对于文言文,你不会就是不行。
一般认为,这包括数据类型(值 / 引用)、作用域(scope)、keyword、builtin 函数等
关于 Python 版本的选择,很多公司老项目依然在用 2.6、2.7,新项目的话建议至少选择 3.6(拥有稳定的 asyncio)。
- 从 2.7 到 3.4 https://blog.laisky.com/p/whats-new-in-python3-4/
- 从 3.4 到 3.5 https://blog.laisky.com/p/whats-new-in-python3-5/
- 从 3.5 到 3.6 https://blog.laisky.com/p/whats-new-in-python3-6/
- 从 3.6 到 3.7 https://docs.python.org/zh-cn/3/whatsnew/3.7.html
关于版本最后在说几点,建议在本地和服务器上都通过 pyenv 来管理版本,而不要去动系统自带的 python(以免引起额外的麻烦) https://blog.laisky.com/p/pyenv/
另外一点就是,如果你想写一个兼容 2、3 的工具包,你可以考虑使用 future http://python-future.org/compatible_idioms.html
最后提醒一下,2to3 这个脚本是有可能出错的。
学完基础就可以开始动手写代码了,这时候应该谨记遵守一些 “通行规范”,几年前给公司内分享时做过一个摘要:
- 风格指引 https://laisky.github.io/style-guide-cn/style-guides/source-code-style-guides/
- 一些注意事项 https://laisky.github.io/style-guide-cn/style-guides/consensuses/
有了一定的实践经验后,你应该学习更多的包来提高自己的代码水平。
- 值得学习的内建包 https://pymotw.com/3/
- 值得了解的第三方包 https://github.com/vinta/awesome-python
因为 py 的哲学(import this
)建议应该有且仅有一个完美的方式做一件事,所以建议优先采用且完善既有项目而不建议过多的造轮子。
一个小插曲,写这段的 Tim Peters 就是发明 timsort 的那位
最新文章
- 拦截UIViewController的popViewController事件
- Android View的绘制流程
- Android中finish掉其它的Activity
- Java使用Mysql数据库实现批量添加数据
- C++混合编程之idlcpp教程Lua篇(9)
- The Simplified Project Management Process
- window-messager(消息框)
- C 高级编程 2 内存管理
- html树形菜单控件
- 转: Linux C 动态内存分配 malloc及相关内容 .
- sql server 高可用故障转移(4)
- PHP GZIP压缩+BASE64
- c/c++浮点数在内存中存储方式
- 洛谷P1776 宝物筛选
- vmware + centos 7安装vmtools时提示The path "" is not a valid path to the xxx kernel header
- leetcode 51. N-Queens 、52. N-Queens II
- Mongo查询分组
- 【转】【VS Code】配置文件Launch及快捷键
- quartz---(1)
- 「小程序JAVA实战」小程序的视频点赞功能开发(62)