前言

我以前在学习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小时零一分.

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

刚才想起来试了一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> 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