《Python编程》笔记(一)

来源:互联网 发布:阿里月饼事件 知乎 编辑:程序博客网 时间:2024/05/10 14:56

先睹为快

  • 可以使用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等。
  • PyInstallerPy2Exe可以打包分发。
  • 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:将函数或循环应用于整个目录的各个部分
0 0
原创粉丝点击