• 1. 一起Python吧吕晓旭 2012.9.909/13/12Qunar技术分享1
  • 2. 认识Python Python语言 Python的基本语法 Python中万物皆对象 字符集 Python引用的作用域 Python闭包 Python的lambda表达式
  • 3. webpy IDE 和编辑工具 其他 Python引用的作用域 Python闭包 Python的lambda表达式 我们在用Python做什么 一些Python资源 问答
  • 4. python
  • 5. 当年初始认识《Programming.Collective.Intelligence》 代码好短,伪代码? http://tuan.etao.com/
  • 6. 认识Born in 1989 Guido van Rossum Version 2.7/3.2 Programmed in C
  • 7. Who use itGoogle (various projects) NASA (several projects) NYSE (one of only three languages "on the floor") Yahoo! (Yahoo mail & groups) RealNetworks (function and load testing) RedHat (Linux installation tools--yum) Instagram (Django)
  • 8. Other Cases
  • 9. 优势简单、优雅 易学 免费、开源 高级语言 可移植性 面向对象 自省能力 可扩展性 (c/c++) 丰富的库资源
  • 10. 应用系统编程 图形处理 数学处理 文本处理 数据库编程 网络编程 WEB开发 测试
  • 11. 语言特点崇尚简洁 (可读性和清晰性接近自然语言) 万物皆对象 动态、多态 严格缩进 解释器 (方便调试) 编译 .pyc(字节码)
  • 12. python思想这在由Tim Peters写的python格言(称为The Zen of Python)里面表述为:There should be one-- and preferably only one --obvious way to do it. 这正好和Perl语言的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。
  • 13. 一些不足强制缩进 单行语句和命令行输出问题 正则表达式没有像perl等内嵌到语法中(有好有坏) 性能一般 严谨性较差 其他
  • 14. 启动python可以直接在终端中 # python # ipython sudo apt-get install ipython easy_install ipython(pypi)
  • 15. 启动Pythonpython#!/usr/bin/env python print "Hello, world!"
  • 16. 基本语法赋值语句 Foo = 1、a = b = 1、 a, b = 1, '2'、a,b = (1,2) 小心不要覆盖内置名字 操作符-类似于C and(&&)、 or(||)、not(!)、in、is 注:《python in a nutshell 第二版》第50页 数据结构: 列表 [1,2 ] 元组 (1,2 ) 字典 {‘username’:’kenny’, ‘gender’:1 } dict(c = 11) 控制结构 if statment: .... for i in iterable: ...... while statment: .....
  • 17. 函数 def foo(): print ‘你好~’ 类 class AlgoClass(): def __init__(self): Self.foo = 1 pass def fib (self,n): a,b=0,1 引用库 import telnetlib t = telnetlib.Telnet(host, port) 其他: C中的三元运算符(a = b ?c :d).Python中的方案 (a = c if b else d) False、None、’’都代表布尔中的‘假’ 没有 i++或者 ++i。Python的写法是 i += 1或者 i = i+ 1
  • 18. 万物皆对象Python中一切都是对象 字符串(不可写)、列表、字典、数字类型 function、 module、None(python中的NULL) 例子 但是python可以像过程语言风格一样编写代码
  • 19. 字符集默认只识别只包含ASCII的源码文件 # -*- coding: utf-8 -*- 字符串默认存储的也是ASCII码 可以使用string的decode方法进行转换 初始化变量也可以用 u’你好’ 将变量强制转换为unicode 使用codecs模块进行编码转换 Python模块输入输出一般会把编码encode为unicode 正则最好用unicode
  • 20. 作用域引用名作用域搜索顺序 函数内部 最近的闭包环境 本模块包含的所有名字 Python 内建的名字 来源:http://docs.python.org/tutorial/classes.htm 注意在函数中引用模块中的全局变量,请用global关键字标注
  • 21. 闭包支持闭包的语言有这样的特性 函数是一阶值(First-class value),即函数可以作为另一个函数的返回值或参数,还可以作为一个变量的值。 函数可以嵌套定义,即在一个函数内部可以定义另一个函数。 怎么实现的
  • 22. lambda vals = value.split(";") sublines = map(lambda x:'\t'+x+';', vals )
  • 23. map? 解析一个URL参数列表,将参数转为数组 url = 'src=yy_content_jygl&sign_from=3000&sign_account_no=20882022115171640156' params = map(lambda x:x.split('='), url.split('&')) print params # [['src', 'yy_content_jygl'], ['sign_from', '3000'], ['sign_account_no', '20882022115171640156']]
  • 24. reduce? 对一个数组 0,1,2,3,4,5 求和 m = [0,1,2,3,4,5] value = reduce(lambda x,y:(x+y),m) value #15
  • 25. filter? 将数组 ‘wu’, ‘tian’, ‘liu’, ‘yue’, ‘cheng’, ‘qiu’ 中,过滤名字中包含’u’的字符串 m = [ 'wu', 'tian', 'liu', 'yue', 'cheng', 'qiu' ] m = filter(lambda x: x.find('u')!=-1, m) # ['wu', 'liu', 'yue', 'qiu']
  • 26. webpyhttp://webpy.org/ 用webpy搭建简单的web服务 webpy中的模板
  • 27. IDE和编辑工具Eclipse Emacs Vim
  • 28. 其他pdb PyPI Egg 如何建立Python模块 Python运行环境
  • 29. 我们在用Python做什么国际机票运价抓取(httplib2/urllib2/urllib/logging/json/threading) 国际机票运价解析(ply,re) 国际机票运营工具及数据统计(webpy,psycopg2)
  • 30. 网络资源http://www.python.org http://python.cn ChinaUnix Python Forum AppEngine 深入 Python :Dive Into Python 中文版http://woodpecker.org.cn/diveintopython/ Python in a nutshell Google python style http://google-styleguide.googlecode.com/svn/trunk/pyguide.html
  • 31. ?