分享一个准备给公司讲python高级编程的slide

前言

我以前在学习python模块的时候,曾经翻译[pymotw](http://pymotw.com/2/py-
modindex.html#)的文章,其实还是有抄袭的嫌疑,从最近开始逐渐直接阅读python标准库源码, 收获颇多.
我现在不愿意教一些从网上或者书里提到的知识点,而更愿意根据我工作中常见的需求去挖掘对应的python的解法.也是在过程中对一些东西有了比较深的理解.
这个ppt是从[像黑客一样使用 Linux 命令行](https://linuxtoy.org/archives/using-cli-like-a-
hacker.html)获得的灵感. 然后角度为<python高级编程>, 还用到了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
14

>>> 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

版权声明:本文由 董伟明 原创,未经作者授权禁止任何微信公众号和向掘金(juejin.im)转载,技术博客转载采用 保留署名-非商业性使用-禁止演绎 4.0-国际许可协议
python