接触的语言越多,对语言的偏执就越少,越来越明白语言只是一种解决问题的工具 - 核心永远是问题与解决问题的思路。
我的体验,从简练程度上来讲,shell脚本优于perl/python/lua,perl/python优于java/C++,所以能用前者解决的问题,就别用后者。
项目中用到python,前段时间就“系统”的学了下python - 主要也就是把官方的tutorial过了一遍,从学习python的资料来看,我的评价是:
- Python Tutorial(http://docs.python.org/2/tutorial/), 简洁而重点突出,绝对是上品,把这个快速的过一篇,例子全部敲一遍,想说没入门都难。另外这里(http://docs.python.org/2/download.html)download下来的,还有关于函数式编程,网络编程,argparse的专题,都是10来页的,读读挺不错
- Learn python the hard way,这个去年过年的时候拷到ipad上读过几页,绝对是给没有编程经验的人看的,如果你是个程序员,相信全篇读下来你会被啰嗦死的 - 别降格去读这个了。
- Learn Python,上千页的大部头,看着就有压力,要是没事就别浪费时间读了,边做边查reference吧。
另外,python提供了绝佳的交互式环境:
$ python Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> dir(os) ['F_OK', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIA L', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLA Y', 'P_WAIT', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'UserDict', 'W_OK', 'X_OK', '_Environ', '__all __', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_copy_reg', '_execvpe', '_exists', '_exit', '_get_exports_list', '_make_stat_result', '_make_statvfs_result', '_pickle_stat_result', '_pickle_statvfs_result', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'curdir', 'defpath', 'devnull', 'dup', 'dup2 ', 'environ', 'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'ex tsep', 'fdopen', 'fstat', 'fsync', 'getcwd', 'getcwdu', 'getenv', 'getpid', 'isatty', 'kill', 'linesep', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'popen2', 'po pen3', 'popen4', 'putenv', 'read', 'remove', 'removedirs', 'rename', 'renames', 'rmdir', 'sep', 'spawnl', 'spawnle' , 'spawnv', 'spawnve', 'startfile', 'stat', 'stat_float_times', 'stat_result', 'statvfs_result', 'strerror', 'sys', 'system', 'tempnam', 'times', 'tmpfile', 'tmpnam', 'umask', 'unlink', 'unsetenv', 'urandom', 'utime', 'waitpid', ' walk', 'write'] >>> help(os.tmpfile) Help on built-in function tmpfile in module nt: tmpfile(...) tmpfile() -> file object Create a temporary file with no directory entries. >>> print os.tmpfile() <open file '<tmpfile>', mode 'w+b' at 0x02580CD8>
在python交互环境中,dir查找成员,help看成员的帮助文档,然是直接在命令行测试这个api ---- 一气呵成!
下面谈谈就根据我对python粗浅的了解,所感受到的其亮点:
- 极佳的命令行交互体验,实时测试:见上
- 函数式编程的工具:filter + map + reduce: filter(lambda x: x > 10, range(1,20))
- list comprehension:[x for x in range(1,10) if x % 2 == 0]
- 多变量赋值:a, b = b, a
- lambda: lambda x: x > 10
- for和try的else支持 - 在其他语言里这个都得另外加flag实现,相当不便。
- 内置的documentation strings支持: """ This is a documentation string """
- generator-pull模式:需要时才产生: xrange()
- chained comparation: a < b == c
- 模块机制:module - package
- 标准的异常机制:try-except-finally; with statement
- 内置的强大集合类:list, tuple, set, dict
- 完善的标准库