Python Resource

Python Resource

Python 是在工作期间零零碎碎学习起来的。当时正值部门申购图书,鉴于 Python 的动态、快速等特性,就申请买了一本 Python 核心编程》 ,内容可谓全面,但翻译实在太差,有些概念看了几遍也没弄清楚,所以只匆匆翻阅完了解一个大概。 后来在豆瓣上看了下评分,不到 8 分的样子,顺便做了下简评 只能说看这本书省去了初学者看电脑的眼疲劳,可以快速浏览一窥全貌。不过相比公开课,或者网上的教材,太不适合入门;尽管我还是硬着头皮差不多看完,也差不多入门

Python有所了解之后,断断续续写了一些简单的程序,按先后顺序汇总如下:

·         BBS账户批量导入工具:基于Discuz!,数据库为MySQL,直接读取Excel中的数据批量导入即可;当时正好在找代码片段分享的网站,就贴在snipplr上,这应该是我的第一个可以用的Python程序。

·         复杂密码生成工具:关于这个还有一段趣事,见本站Complex Password Utility,源代码PasswordGen on Github

·         邮件测试工具:碰到的Java程序员们连一个简单的SMTP测试用例都懒得写,所以整了一个Python版,参考email: Examples;用Telnet当然也可以,见本站Telnet Introduction

·         LDAP 账户查找工具:那时公司出了所谓的内网导航,提供查找员工的电话、邮件等信息,但后来残了,邮件地址不再显示(在一个靠邮件来沟通的公司,可见这种残会有多残),所以写了一个脚本自己用,见源代码LDAPSearch on Github

·         Java Service接口测试用例生成工具:在For Rails中提到过,思路见模板jUnit TestCase Gist

·         Markdown Blog程序:使用Web.py开发的Blog程序,自动渲染Markdown格式成HTML,见Blog on Github,在线demo

·         单词排行程序:同学在邮件中提到Writing an Hadoop MapReduce Program in Python,手上正好有Oracle Database 11g的全部文档,所以动手统计了一下词频,不知道每年的高考、考研的英语高频词汇是不是这样统计出来的。

以上大概是自学Python以来写过的一些程序,大部分代码还在,从中可见Python代码写得很不成熟;分析起来无非就是Python基础不过关、对标准库第三方库不熟练、受时间精力约束程序缺少锤炼、阅读源代码太少等之类的原因;当然,也很业余。

1      为什么是Python

前段时间写For Rails时,稍微概括了下自己的工作,这里再提一下:我是一枚Java攻城狮,工作两年多,主要做Java Web开发,期间转去做了一年多的Oracle DBA,维护Oracle EBS,也当过Linux Administrator。似乎涉猎的东西太多太浅,有点样样稀松的嫌疑。

那么,为什么要学Python呢?我觉得可以先看看PeterTeach Yourself Programming in Ten Years,中文翻译见十年学会编程

关于语言的选择,这里直接抄录十年学会编程

不少人问我,他们首先该学哪种编程语言。没有绝对的答案,不过请考虑以下几点:

·         用你的朋友的。当被问起我该用哪种操作系统,WindowsUnix还是Mac,我总是回答:你朋友用什么,你就用什么。你从朋友那能学到知识,这种优势可以抵销不同操作系统或语言之间本质的差异。也考虑你将来的朋友:程序员社区你将成为它的一部分如果你继续往前走的话。你选择的语言是否有一个成长中的社区,还是人数不多、即将消亡?有没有书籍、网站、在线论坛回答你的问题?你喜欢论坛里的那些人吗?

·         Keep it simple, stupid. C++Java这样的语言是为经验丰富的程序员组成的团队进行专业开发而设计的,他们专注于代码运行时的效率。因此,这些语言有些部分非常复杂。而你关注的是如何编程,不需要那些复杂性。你需要的是这样的语言:对单个的编程新手来说,它易学易记。

·         练习。你偏爱哪种学弹钢琴的方式:通常的交互式的方式,你一按下琴键就能听到音符;还是批量模式,你只有弹完整首曲子才能听到音符?显然,用交互模式学习弹钢琴更容易些,编程也一样。坚持用交互模式学习并使用一种语言。

有了上面的准则,我推荐的第一个编程语言是PythonScheme。因人而异,还有其它好的选择。如果你的年纪是10岁以下,你可能更喜欢Alice。关键是你要选择并开始实践。

正如文中提到的一样,我学习Python很大一部分原因就是朋友的介绍;经过一些练习之后,你会发现自己越来越喜欢Python的简洁。印象最深的一次,要属部门一次关于Web Service的技术交流会,主持人用Java来演示XML RPCJSON RPCSOAP,不说混杂着各种Annotation,连这些协议都未所有触及,就疯狂的演示各种语言的客户端程序了。鉴于此,我花了几天时间看了下wiki,然后用Python做了几个原型,还附加地看了REST,这时你会发现用Python来解释会更加简明,这大概就是奥卡姆剃刀所讲的简单有效原理吧。

2      一点Python编程资料

因为Python学习得很业余,所以想加强理解,提高编程技能;在工作之余顺手收藏了一些Python相关的资料,有一些看了一部分就搁置了,但时常还是会想起来是不是该抽点时间继续看看。基于以上原因,就动手整理一份Python编程的资料作为索引,以后会陆续更新。

3        入门和基础

PythonPython 2.x Python 3.x 之分,争论很多,见Python2orPython3。初学者不用考虑这个问题,可以从Python 2.x入门,之后再讨论会多一些理性。

·         洪强宁:PythonWeb 2.0网站的应用:豆瓣网洪强宁在QCon北京2010中的技术分享,若不能访问,请自备梯子;另外,豆瓣的阿北很值得关注。

·         A Byte of Python:即简明Python教程,边看边练习就对Python有基本的了解,可以轻松存活。

·         Google’s Python LessonsGoogle出品的Python教程,值得信赖。

·         Python DocumentationPython在线文档,若嫌枯燥,可以直接看Python Standard Lib

·         42区:python入门指引:江湖人称张教主Python资料索引。

·         CS61A: SICP with Python:作为计算机相关人士,SICP都不了解,实在很惭愧,所以来还债了。这应该是起源于MITSICP教程,一个用Python,一个用Scheme

·         看到一个有趣的python的招聘测试:同学发的一个贴,总结了一下应聘中遇到的问题,并给出了相应的资料来学习。如果想检测下自己的Python水平,请自觉移步北京视讯天下的开发测试

·         MOOC们:在线公开课很多,见课程图谱;仅在Codecademy上学了一点;现在希望能够每天跟进一些感兴趣的课程,多多学习。

·         书:去年6月份一同事离职,我买了两本黑客与画家,一本送给他(博客一起去看海),另一本给部门老大;他回送了一本Python源代码剖析,看书名就知道是讲底层原理的,有机会啃啃。

·         源代码:直接到Github上去找吧。

4        Python与数据库

在项目开发中,数据库应用必不可少。这里汇总下目前接触过的数据库和使用教程。

SQL,计算机出身的人应该都学过,若有疑问可以参考Wikipedia SQL,并使用SQLite做下练习。

·         PEP249: DB API:数据库访问接口规范,当时还做了一份笔记

·         SQLite:教程见SQLite Python Tutorial;若要深入了解,推荐The Definitive Guide to SQLite;看此书时,做了一些好句子、段落的摘要,见Sentences in SQLite 3

·         MySQL:教程见Python MySQL Database Access

·         Oracle Database:有可能这是最庞大的数据库,所以需要专职的DBA。官方教程The Mastering Oracle+Python Series,快速入门教程cx_Oracle Quick Start

·         SQLAlchemyPythonORM标准和框架,解决面向对象编程和关系数据库模式不匹配的问题。

数据库理论除了SQL,还有另一派NoSQL

关于NoSQL,先上一段笑话:“Big data is like teenage sex: everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it.” Big DataNoSQL紧密相连,Big Data为甚?目前我没有多少理解和认识,所以先来看看NoSQL,在NoSQL Database上的定义和介绍:

NoSQL DEFINITION: Next Generation Databases mostly addressing some of the points: being non-relational,distributedopen-source and horizontally scalable.

The original intention has been modern web-scale databases. The movement began early 2009 and is growing rapidly. Often more characteristics apply such as: schema-free, easy replication support, simple API, eventually consistent / BASE (not ACID), a huge amount of data and more. So the misleading term “nosql” (the community now translates it mostly with “not only sql”) should be seen as an alias to something like the definition above.

关于常见NoSQL产品的比较见Main NoSQL Database Comparison;若果需要一些NoSQL的理论知识和基本概念,见The NoSQL EcosystemBig DataNoSQL。目前仅用过MongoDBRedis

·         MongoDB:如果熟悉SQLMongDB的学习成本会很低;相关资料见Python Language Center in MongoDB;用过的两个驱动:1PyMongo,提供了类似Mongo Shell的接口;2MongoEngine: A Python Object-Document-Mapper for working with MongoDB,即MongoDB’ORM’框架,此时变成了’ODM’MongoEngine on Github

·         RedisRedis需要一些学习成本,入门推荐The Little Redis Book;用过的Python客户端驱动Redis-py;更多客户端见Redis Clients

·         NoSQL建模:SQL发展了几十年,有很成熟的建模技术,那么NoSQL呢,见陈皓:NoSQL数据建模技术,原文NoSQL Data Modeling Techniques

·         更多资料:NoSQL英文站点见NoSQL DatabaseNoSQL中文论坛见NoSQL Fan:关注NoSQl相关的新闻和技术NoSQL Fan中,MongoDBRedis资料很多,已经形成了资料专题,包括介绍、内部实现、应用与优化、新闻等,总能发现你想要的东西:1NoSQL FanRedis资料汇总专题2NoSQL Fan: MongoDB资料汇总专题

5        PythonWeb开发

PythonWeb框架众多,见Web Frameworks for Python,总有一款适合你或你的项目,实在不行,请动手打造自己的框架;为什么会有这么多框架呢,见Why so many Python wen frameworks?

·         Web.py:已故Aaron Swartz的框架。一句话介绍”web.py is a web framework for Python that is as simple as it is powerful. web.py is in the public domain; you can use it for whatever purpose with absolutely no restrictions.”。接触的第一个Web框架,后来模仿MovableType,写了一个简单的博客,见Blog on Github,在线demo http://ec2-54-251-227-120.ap-southeast-1.compute.amazonaws.com;碰到的坑点是模板中嵌套Python代码一直有缩进问题。

·         Flask:一句话介绍”Flask is a lightweight web application framework written in Python and based on the Werkzeug WSGI toolkit and Jinja2 template engine. It is BSD licensed. Flask is called a microframework because it keeps the core simple but extensible”。因为工作变动,练习过一段时间的Flask,以便熟悉开发的工具链;如果没有Rails,我想这才是自己首选的Web开发框架: simple but extensible and for fun。实战教程The Flask Mega-Tutorial

·         Tornado:来自FriendFeed的异步框架,FriendFeedFacebook收购后开放了源代码,见Tornado on Github。一句话介绍”Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed”Tornado主要特点是non-blocking,如果你想开发real-timeWeb应用,Tornado是一个不错的选择。

·         Django:一句话介绍”Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.”,接触不多,作为全栈式框架,听说它的组件都是Made in Django。更多资料见Django资料

6        IDE

·         Vim + Python Mode。目前就用这个方案,很方便,直接引用同学的效果图。关于Vim资料和讨论,请移步Vim资料大全;关于Vim更多插件和演示,请移步k-vim on Github;关于GitGithub,请移步本站Free Blog with Github Pages

7        社区

·         啄木鸟社区

·         42区:网站开发.漫游指南

·         Python on V2EX

·         Python4cn

·         豆瓣Python小组

·         哲思社区

8        周刊

·         Python Weekly:每周更新,包括Python相关的文章、教程、演讲、书籍、项目、工作等。

·         Pycoder’s Weekly:与Python Weekly类似,两者可以互为补充,了解过去一周动态。

·         码农周刊developerWorks出品的周刊,来自国人的分享。可以先看为什么要做《码农周刊》?;接着《码农周刊》用到的一些技术再接着周刊回顾。这里不仅仅是Python

9      Reference

·         十年学会编程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值