原文链接: 克里斯的小屋――《python编程》笔记(一)
先睹为快 可以使用 pickle 模块将对象持久化:它会将内存中的Python对象转换成序列化的字节流,可以持久化几乎各种类型的对象。此外,该模块可以根据序列化的字节流重新构建原来内存中的对象。 pickle 可以在网络通信中使用。 glob.glob('*.txt') 可以帮助我们或许当前目录下所有的 txt 后缀的文件。 shelves 类似一个持久化的字典,提供两个重要的接口: open() 和 close() ,其他和字典操作类似。 Python 是以20世纪70年代的英国喜剧《巨蟒的飞行马戏团》(Monty Python's Flying Circus)来命名的。 Guido van Rossum 为创始人。SQL 风格的查询语法:
[rec.name for rec in people if rec.age >= 45] [(rec.age ** 2 if rec.age >= 45 else rec.age) for rec in people]调用方法的转换:
instance.method(arg1, arg2) # 转换成 class.method(instance, arg1, arg2) getattr(class, attr) 和 setattr(class, field, val) 获得指定属性和设置指定属性。 GUI工具包: tkinter , wxPython , PyQt , PythonCard , Dabo 等。 PyInstaller 和 Py2Exe 可以打包分发。import this 可以看到由 Python 核心开发者Tim Peters提出的总结性文字,展现了Python背后的设计哲学:
The Zen of Python, by Tim Peters
Beautiful is better than ugly.Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
EIBTI : Explicit is better than implicit 决定性作用的想法,显著区别于其他语言。
系统编程 强有力的库和源代码开放的组合可以大大提高程序的开发速度,同时使你能够摆脱现有性能和缺陷的束缚。 Cygwin 是一个在windows环境下提供类似于Unix系统的功能的系统。 Python系统模块: sys : 负责导出与Python解释器本身相关的组件(如模块搜索路径) os : 包含与Python所在底层操作系统相应的变量和函数 glob : 用于文件名扩展 socket : 用于网络连接和进程之间通信(IPC) threading , _thread , queue : 用于运行和同步并发线程 subprocess , multiprocessing : 用于启动和控制并行进程 time , timeit : 用于获取系统时间相关细节signal , select , shutil , tempfile : 用于多种系统相关任务
dir() 函数可以返回一个列表,包含带属性对象的所有属性的字符串名称。 module.__doc__ 可以提供模块详细的文档。 help(module) 提供分页的帮助文档,是PyDoc系统提供的接口之一。 注意 str.splitlines() 和 str.split('\n') 的区别。字符串查找:
'Hello, world'.find('ello') # 如果仅仅判断的话,可以这样: 'ello' in 'Hello, world' string 模块中提供了一些有用 的预设变量: string.ascii_lowercase , string.whitespace 。 sys.path 列表会在解释器启动时依据PYTHONPATH设置进行初始化,包括所有的 .pth 路径的文件内容,系统默认设置等。 无论使用哪种底层操作系统,大多数库调用都接受 / 和 \ 作为目录路径分隔符。 sys.modules 是一个字典,包含了Python进程中所导入的每个模块详细信息; name:module 的格式存储的。 sys.builtin_module_names 包含的是Python可执行程序的内置模块名称。 sys.exc_info() 函数可以返回一个元组,其中包含最近的异常类型、值和追踪对象。 标准模块 traceback 可以用于追踪异常。 sys.argv , sys.stdin , sys.stderr , sys.stdout , sys.exit 等都是常用的工具。 os 模块是比较核心的模块,包含了很多常用的操作系统调用。调用涉及到目录、进程和Shell变量等。该模块提供了POSIX工具,操作系统调用的跨平台移植标准,以及不依赖平台的目录处理工具,如 os.path 。 常用的 os 模块工具: Shell变量: os.environ 运行程序: os.system , os.popen , os.execv , os.spawnv 派生进程: os.fork , os.pipe , os.waitpid , os.kill 文件描述符、文件锁: os.open , os.read , os.write 文件处理: os.remove , os.rename , os.mkfifo , os.mkdir , os.rmdir 管理工具: os.getcwd , os.chdir , os.chmod , os.getpid , os.listdir , os.access 移植工具: os.sep , os.pathsep , os.curdir , os.path.split , os.path.join路径名工具: os.path.exists('path') , os.path.isdir('path') , os.path.getsize('path')
os.path.split() 可以用于分隔和合并目录路径字符串。 os.path.normpath('C:\\hello/test.py') 可以得到与平台要求符合的路径表示: 'C:\\hello\\test.py' 。 os.startfile 函数可以打开一个文件,使用系统默认的程序打开,这个应用比较好。 重要工具说明: os.environ :获取和设置Shell环境变量 os.fork :在类Unix系统下派生新的子进程 os.pipe :负责程序间的通信 os.execlp :启动新程序 os.spawnv :启动带有底层控制的新程序 os.open :打开基于底层描述符的文件 os.mkdir :创建新目录 os.mkfifo :创建新的命名管道 os.stat :获取文件底层信息 os.remove :根据路径名删除文件os.walk :将函数或循环应用于整个目录的各个部分