本文由 简悦 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)。


关于版本最后在说几点,建议在本地和服务器上都通过 pyenv 来管理版本,而不要去动系统自带的 python(以免引起额外的麻烦) https://blog.laisky.com/p/pyenv/

另外一点就是,如果你想写一个兼容 2、3 的工具包,你可以考虑使用 future http://python-future.org/compatible_idioms.html

最后提醒一下,2to3 这个脚本是有可能出错的。


学完基础就可以开始动手写代码了,这时候应该谨记遵守一些 “通行规范”,几年前给公司内分享时做过一个摘要:


有了一定的实践经验后,你应该学习更多的包来提高自己的代码水平。


因为 py 的哲学(import this)建议应该有且仅有一个完美的方式做一件事,所以建议优先采用且完善既有项目而不建议过多的造轮子。


一个小插曲,写这段的 Tim Peters 就是发明 timsort 的那位

最新文章

  1. 拦截UIViewController的popViewController事件
  2. Android View的绘制流程
  3. Android中finish掉其它的Activity
  4. Java使用Mysql数据库实现批量添加数据
  5. C++混合编程之idlcpp教程Lua篇(9)
  6. The Simplified Project Management Process
  7. window-messager(消息框)
  8. C 高级编程 2 内存管理
  9. html树形菜单控件
  10. 转: Linux C 动态内存分配 malloc及相关内容 .
  11. sql server 高可用故障转移(4)
  12. PHP GZIP压缩+BASE64
  13. c/c++浮点数在内存中存储方式
  14. 洛谷P1776 宝物筛选
  15. vmware + centos 7安装vmtools时提示The path "" is not a valid path to the xxx kernel header
  16. leetcode 51. N-Queens 、52. N-Queens II
  17. Mongo查询分组
  18. 【转】【VS Code】配置文件Launch及快捷键
  19. quartz---(1)
  20. 「小程序JAVA实战」小程序的视频点赞功能开发(62)

热门文章

  1. Oracle数据库查看表空间sql语句
  2. Opencv图片明暗处理
  3. Spring中好玩的注解和接口
  4. C# 实现生产者消费者队列 (转)
  5. 改进初学者的PID-微分冲击
  6. docker build时改变docker中的apt源
  7. Linux系统swappiness参数在内存与交换分区之间优化作用
  8. java-socket-demo的实现
  9. golang 使用kcp实例
  10. 台式电脑Bios界面设置U盘启动