http://matrix.42qu.com/10757179

前言

其实我也不知道python怎么入门,由我来写这个真的不是很合适。我学python是直接找了dive into python来看。然后照着写了几个例子。大概两天后,就能磕磕绊绊的上路了。就好像拿筷子,都不记得怎么学会的拿筷子,怎么来教人呢?

不过最近在python-cn的列表里面,我大概连续数周都持续看到“python入门看哪本教程比较好”,实在是不堪其扰。干脆就写个简单的guide,有心的人自己看。没心的——那我也没办法了。

基本知识

首先,你要了解一个事情。很多你不会的东西并不属于python。例如你不知道网络通讯的流程,你不知道文件的权限和打开标志用法,你不知道fork和stdin/stdout的关系。这些python教不会你。如果你缺乏这些和语言/库无关的相关知识,请自行补课。如果你缺乏计算机基础理论,请自行补课。

因此不要随便给我发邮件/留言/咨询,为什么这个问题在python里无法解决。为什么python无法所见即所得,为什么python无法热部署,为什么python无法用于嵌入式开发。在问这个问题之前,请先确认“这是一个python的问题”。例如GIL,或者脑残lambda。如果你不确定,请自己搜索一下相关的文章,确认一下。在提问前,看看“提问的智慧”。如果你确实搜过了,找不到,那就问吧,没办法。

入门

在网络上,python入门的两大基础书籍分别是:

A Byte of Python 中文版

Dive Into Python 中文版

后面基本就是看python-doc,我推荐你跳过一堆有的没的,直接看Library Reference。python本身就是易读性极强的代码,文档又相当漂亮,内置库又全。大部分情况下,python-doc都应当能解决你的问题。

web

web是程序员的一大去向。python程序员入门必须要过的一个框架就是django。不要纠结了,django在python社区中名气太大,用的人太多。因此入门材料是最多的,社区最大,门槛最低。如果你要入门web,必然从django开始。在不熟悉python的情况下,我不推荐你贸然从其他框架开始入门。

当然,如果你已经熟悉python了,考虑入门web框架,可以参考专精一节。

爬虫

python下说到爬虫开发,入门首选Scrapy。原因和上面一样,社区最大,用的人最多。好不好用就见仁见智了。反正我的所有爬虫框架都是用自己基于gevent写的库。

ui

python的ui框架也很多,很复杂。同样,如果是入门,我建议从qt的两个框架,pyqt和pyside开始入门。关于这两家的恩怨我就不多废话了。

专精

所谓专精,是指使用python在特定工作上。我们基本分为几个领域。

系统和部署

virtualenv:基本凡是在商用环境中部署的,建议都用这个。可以将python自带在源码里面,避免迁移/集成问题。

python-daemon:写daemon的时候比较方便。

网络

说到网络,基本就是除web外。

twisted:非常强大的网络库,各种协议支持全面,不过reactor模式真是纠结。

gevent:异步协程模式的网络库。

sacpy:强大的网络库,基本啥都能干。

pyzmq:我一直不觉得zeromq是一个mq。我觉得他是一个抽象网络层。

web容器

python web框架的一大特点,是容器/框架/ORM/template可以分开自己玩。

注意,容器和框架是两码事情。容器是python web运行的环境,框架是解析环境的玩意。两者间一般都使用wsgi接口进行连接。这是python的标准做法,fastcgi/scgi也会被转换为wsgi进行连接。但是也不是没有其他选择。一般我们有以下模式:

cgi:python-doc中自带了cgi模块。

mod_python:embed in apache。

下面是wsgi接口的容器。wsgi的优点在于我们可以在这些容器上运行任意一款支持wsgi的框架。

flup:支持提供fastcgi, scgi, AJP接口,web server可以用这三种协议进行连接。

Google App Engine:PaaS服务。

Gunicorn:直接提供http服务。

mod_wsgi:使用内部协议和apache集成。

twisted:直接提供http服务。

tornado:直接提供http服务。

uWSGI:使用内部协议和nginx集成。

werkzeug:直接提供http服务。

建议的部署模式是,用apache的,去mode_wsgi。用nginx的,去uwsgi。用GAE的,直接可用。其他,通通转发。

web

你可以参考飞龙的这篇文章,里面介绍了数种框架。你可以通通玩一下,反正也不麻烦,然后选择一种最适合自己的玩意。

python中有一种不得不提的玩意就是Zope。这个东西我不知道该如何评价,有兴趣的自己看吧。

ORM

ORM:python的ORM系统比较单一,一般都是sqlalchemy。这个框架非常强大,但是很消耗资源。有兴趣的可以去官网上自己了解。偶尔也见用SQLObject的,不多。

ORM的另一大选择是ZODB,不过用的比较少。希望了解的自己去咨询老潘。

template

python wiki上有篇文章提到了python template engine的分类和列表。作为专精,我建议你至少玩一下string.Template,webhelpers,mako,jinja2,Genshi这几个玩意。

爬虫

关于python爬虫的进阶,就比较不好说。我正在写一篇长篇blog,介绍python爬虫的种种。不过至少来说,你需要了解以下几个东西:celery,beautifulsoap,lxml,selenium,phantomjs,pyquery。

ui

gui库的列表可以看这里,其中我推荐你看一下玩玩的有:PyGtk,TkInter,WxPython,Glade,pygame。

科学计算

不用废话,你可以看这篇文档用Python做科学计算。作者出书了,你可以支持一下。

图形处理

那必然要提到的就是pil,python imaging library。另一样要介绍的是pydot,pygraph或者pygraphviz。这不是图形库,准确的说,应当是图论库。他可以使用graphviz将图论结构转换为图像。

文档

pygments:格式化代码的库,可以将文本代码格式化为不同格式的,带颜色的代码。

markdown:格式化markdown文档为html的库。不过我觉得实现的和标准不一致,没用。

reStructured:docutils工具组,可以转换为多种格式。

sphinx:同样是rst的工具,可以生成多种格式。

进阶

首先,你应当去看沈游侠在某次cpug聚会上的讲话Python 编程艺术,这是python程序员进阶的必读。不过很可惜,slide是高桥流的,本身不是为了让你看内容而出的。而当时的演讲又没有录像(如果有的话,请给我一份拷贝,我会问沈游侠能不能放出,找空间,搞定相关问题,感谢),因此理解上相当困难。不过这里的每一句话都相当有道理,是数十年程序经验的总结。

另外,作为进阶,你可以适当的看python3的一些内容。Dive Into Python 3 中文版。还有pypy和cython。

作为python进阶人士,你一定要在手头备一份常用发行的源码,不要求小版本一致,至少大版本一致(2.7.x,最后一位可以不对齐)。适当的阅读源码,尤其是Objects目录。经常重新阅读python-doc。

【转】python入门指引的更多相关文章

  1. python入门简介

    Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...

  2. python入门学习课程推荐

    最近在学习自动化,学习过程中,越来越发现coding能力的重要性,不会coding,基本不能开展自动化测试(自动化工具只是辅助). 故:痛定思痛,先花2个星期将python基础知识学习后,再进入自动化 ...

  3. Python运算符,python入门到精通[五]

    运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是“+”.在计算器语言中运算符大致可以分为5种类型:算术运算符.连接运算符.关系运算符.赋值运 ...

  4. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  5. Python基本语法,python入门到精通[二]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]我们已经在自己的windows电脑上搭建好了python的开发环境,这篇博客呢我就开始学习一下Python的基本语法.现 ...

  6. visual studio 2015 搭建python开发环境,python入门到精通[三]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...

  7. python入门教程链接

    python安装 选择 2.7及以上版本 linux: 一般都自带 windows: https://www.python.org/downloads/windows/ mac os: https:/ ...

  8. Python学习【第二篇】Python入门

    Python入门 Hello World程序 在linux下创建一个叫hello.py,并输入 print("Hello World!") 然后执行命令:python hello. ...

  9. python入门练习题1

    常见python入门练习题 1.执行python脚本的两种方法 第一种:给python脚本一个可执行的权限,进入到当前存放python程序的目录,给一个x可执行权限,如:有一个homework.py文 ...

随机推荐

  1. JSP和Servlet笔记

    一.JSP的3个编译指令   作用:page指令用于设置整个jsp页面相关的属性,比如页面的编码格式.所包含的文件等等,它们包含在<%@ page %>标记中.  1)page 指令  以 ...

  2. python数据处理之基本函数

    一.基本函数篇 1)python strip()函数介绍 函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstr ...

  3. 学习SpirngMVC之如何获取请求参数

    学习SpringMVC——如何获取请求参数   @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@Cooki ...

  4. Redux入门示例-TodoList

    Tip 前端技术真是日新月异,搞完 React 不搭配个数据流都不好意思了.满怀期待的心去翻了翻 flux,简直被官方那意识流的文档折服了,真是又臭又长还是我智商问题?

  5. RAC+ASM 添加控制文件

    环境介绍:11g RAC 使用 ASM 磁盘组,控制文件只有一个,需要进行添加 参照 MOS 文档 How to Multiplex Control File In RAC Database (文档 ...

  6. 我的第一次Pascal程序

    今天刚刚来学点Pascal语言,都怪我买的书大多是用Pascal语言写的,所以我只能试着学一点咯! 来一段程序员最经典的Hello World! ; begin write('Hello World! ...

  7. 2017广东工业大学程序设计竞赛初赛 题解&源码(A,水 B,数学 C,二分 D,枚举 E,dp F,思维题 G,字符串处理 H,枚举)

    Problem A: An easy problem Description Peter Manson owned a small house in an obscure street. It was ...

  8. bzoj:3994:vijos1949: [SDOI2015]约数个数和

    Description  设d(x)为x的约数个数,给定N.M,求     Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M.   O ...

  9. UVA 1584 字符串

    VJ 该题 链接  https://vjudge.net/problem/UVA-1584 AC代码   字典序最小输出 #include <stdio.h> #include <m ...

  10. os系统

    任务延时函数OSTimeDly 功能:调用该函数的任务将自己延时一段时间并执行一次任务调度,一旦规定的延时时间完成或有其它的任务通过调用OSTimeDlyResume()取消了延时,调用OSTimeD ...