前言

我以前在学习 python 模块的时候,曾经翻译 pymotw 的文章,其实还是有抄袭的嫌疑,从最近开始逐渐直接阅读 python 标准库源码,收获颇多。我现在不愿意教一些从网上或者书里提到的知识点,而更愿意根据我工作中常见的需求去挖掘对应的 python 的解法。也是在过程中对一些东西有了比较深的理解。这个 ppt 是从 像黑客一样使用 Linux 命令行 获得的灵感。然后角度为, 还用到了 webfonts 娃娃体 ^.^

PS: 特别推荐 github 上看到的 "雨痕" 的 学习笔记 . 建议大家都好好看看.

找到它

Expert-Python 或者直接下载代码: github

但是注意我的字体内嵌项目里面,请注意流量,避免移动设备直接访问或者强制刷新

UPDATE: 2015-02-02

我已经把视频放到 youtube 上了:https://www.youtube.com/watch?v=bf5qpFFxo9g大家可以选择在线看

目录

  1. XX 不理解 python 竟然没有 end....
  2. 设置全局变量
  3. 字符串格式化
  4. 操作列表
  5. 操作字典
  6. 字典视图
  7. vars
  8. from future import unicode_literals
  9. from future import absolute_import
  10. 不是支持了绝对引入,而是拒绝隐式引入
  11. 我靠,我的需求呢?-- 在很多开源项目是拒绝你第一次的隐式用法的,
  12. 一个关于编码的问题
  13. 原因是: encoding_example 里面没有对文字自动转化为 unicode, 默认是 ascii 编码
  14. super 当子类调用父类属性时一般的做法是这样
  15. super 的一种用法
  16. 假如不用 super 会这么惨
  17. 手写一个迭代器
  18. 标准迭代器
  19. 生成器
  20. 斐波那契数列
  21. 其实 yield 和协程关系很密切
  22. 来个回调 (阻塞的)
  23. 来个回调 (异步的)
  24. 看到这里,就得说说 contextmanager
  25. 包导入
  26. 包构建__all__
  27. 包构建__path__
  28. 静态方法和类方法的区别
  29. 静态方法和类方法的区别其实是在这里
  30. __slots__
  31. Packaging Tools 的未来
  32. wheel (即将替代 Eggs 的二进制包格式) 的优点
  33. 装饰器
  34. 给函数的类装饰器
  35. 给类的函数装饰器
  36. 带参数的装饰器
  37. @property
  38. @property 的另外使用方法
  39. 元类是什么
  40. 模拟生成一个类
  41. 元类:__metaclass__(实现前面的 Hello 类)
  42. 一个难懂的元类
  43. 描述符
  44. 模块: itertools
  45. 模块: collections (一)
  46. 模块: collections (二)
  47. 模块: collections (三)
  48. 模块: collections (四)
  49. operator 模块 (一)
  50. operator 模块 (二)
  51. operator 模块 (三)
  52. functools 模块之 partial
  53. functools 模块之 wraps
  54. functools 模块之 cmp_to_key
  55. functools 模块之 total_ordering
  56. 开发陷阱 (一) 可变默认参数
  57. 开发陷阱 (二) 闭包变量绑定
  58. 开发陷阱 (二) 闭包应该的用法
  59. 在合适的地方用合适的技巧
  60. 不是它不好,而是你没有用好
  61. ipython 的技巧 (一)
  62. ipython 的技巧 (二)
  63. 联系方式

UPDATE 2014.04.11

今天下午分享了这个 ppt. 并且用 quicktime 录像。想听的可以从 百度网盘 下载或者在线看 (793.6M). 时长 2 小时零一分.

中间有个列表去重。有同学说去重后无法保证第一次出现重复数据位置的顺序.

刚才想起来试了一下:

>>> l = [1, 2, 4, 7, 2, 1, 8, 6, 1]
    >>> list(set(l))
    [1, 2, 4, 6, 7, 8]
    >>> {}.fromkeys(l).keys()
    [1, 2, 4, 6, 7, 8]  # 注意这个和上面结果是一样的,也就是内部实现的去重原理相同
    >>> l = ['a', 'b', 'c', 'd', 'b', 'a']
    >>> list(set(l))
    ['a', 'c', 'b', 'd']
    >>> {}.fromkeys(l).keys()
    ['a', 'c', 'b', 'd']
    >>> from collections import OrderedDict
    >>> OrderedDict().fromkeys(l).keys()  # 只能使用这样的方法实现保证顺序的实现
    [1, 2, 4, 7, 8, 6]                                 # 感谢@杨博的提醒

新的 PYPI 的 DEMO: http://pypi-preview.a.ssl.fastly.net