SlideShare una empresa de Scribd logo
1 de 95
Descargar para leer sin conexión
. . . . . .
Python 语言速成
刘鑫 <liuxin2@kingsoft.com>
两小时内学会 Python
November 11, 2010
. . . . . .
预备内容
. . . . . .
目标人群
有其它语言经验的技术人员
. . . . . .
目标人群
有其它语言经验的技术人员
对 Python 很少或没有了解
. . . . . .
目标人群
有其它语言经验的技术人员
对 Python 很少或没有了解
想要短时间学会实用的 Python 编程知识
. . . . . .
目标人群
有其它语言经验的技术人员
对 Python 很少或没有了解
想要短时间学会实用的 Python 编程知识
想要了解深入学习 Python 的切入点
. . . . . .
我们的目标
了解常用的 Python 开发环境
. . . . . .
我们的目标
了解常用的 Python 开发环境
Python 的基本语法,达到可用程度
. . . . . .
我们的目标
了解常用的 Python 开发环境
Python 的基本语法,达到可用程度
了解一些常用的小技巧
. . . . . .
我们的目标
了解常用的 Python 开发环境
Python 的基本语法,达到可用程度
了解一些常用的小技巧
了解 Python “特有”的一些开发方法
. . . . . .
我们的目标
了解常用的 Python 开发环境
Python 的基本语法,达到可用程度
了解一些常用的小技巧
了解 Python “特有”的一些开发方法
学会管理 Python 环境
. . . . . .
我们的目标
了解常用的 Python 开发环境
Python 的基本语法,达到可用程度
了解一些常用的小技巧
了解 Python “特有”的一些开发方法
学会管理 Python 环境
面向 2.6/2.7 版
. . . . . .
Python 环境
. . . . . .
Python Shell
Python Shell 对于 Python 使用者来说是重要的工作环境,所
以除了内置的命令行,还有一些强化的 Shell 环境。Python 开
发工具中也有一些提供了内置的 Python Shell。
. . . . . .
Pure Python Shell
Python 内置提供两套命
令行环境:基于控制台的
交互环境和基于 TK 图形
系统的 IDLE。
Figure: Python
. . . . . .
Pure Python Shell
IPython 是 Python 官方
文档中推荐的第三方扩展
Shell ,易学易用,外观
友好,功能丰富,与系统
环境融合良好,是非常好
用的交互式环境。
Figure: IPython
. . . . . .
Pure Python Shell
BPython 外观优美,提
供了很多实用的 Python
命令行功能,如自动完
成,代码提示,代码保
存,命令行回溯等,是一
个非常有特点的 Python
Shell。 Figure: BPython
. . . . . .
常见开发工具
IDLE
. . . . . .
常见开发工具
IDLE
Emacs/VIM
. . . . . .
常见开发工具
IDLE
Emacs/VIM
PyDev
. . . . . .
常见开发工具
IDLE
Emacs/VIM
PyDev
第三方编辑器
. . . . . .
工具选择的几个参考因素
支持 Python 語法加亮
. . . . . .
工具选择的几个参考因素
支持 Python 語法加亮
智能缩进
. . . . . .
工具选择的几个参考因素
支持 Python 語法加亮
智能缩进
TAB/空格转换
. . . . . .
工具选择的几个参考因素
支持 Python 語法加亮
智能缩进
TAB/空格转换
多内码支持
. . . . . .
基本语法
. . . . . .
变量、命名与数据类型
. . . . . .
Hello World
§
1 >>> print "Hello World" #我是注释
2 Hello World
3 >>> print u"你好!" #这里是一个字符串unicode你好
¦
. . . . . .
变量、命名与对象
Python 中使用变量无需声明,每一个命名赋值后即在其命名域
中生效,成为一个变量,每个命名都绑定到一个对象。
§
1 >>> print x # 会出错
2 . . .
3 >>> x = " I 'm a var" #赋值即定义
4 >>> print x
5 I 'm a var
¦
. . . . . .
桌面计算器
Python 有无限长数值类型,支持各数数值计算。
§
1 >>> 20 ∗ 5.0 # 普通数学运算
2 100.0
3 >>> 7 ∗∗ 2 # 幂运算
4 49
5 >>> 1 + 2j # 内置复数类型
6 (1+2j )
7 >>> import math # 导入模块
8 >>> dir (math) # 查看 math
9 . . .
10 >>> help (math. sin ) # 自省
11 . . .
12 # 欧拉公式,限于浮点精度,得到一个极小复数
13 >>> math.e∗∗(math. pi∗1 j)+1
14 1.2246063538223773e−16j
¦
. . . . . .
“面向数据结构”的 Python
对于 Python 来说,内置的数据结构不仅仅是语法糖,更是
Python 架构的基本组成部分。
§
1 l = [ '1 ' , 2, 'abc ' , None] # 这是一个 List
2 d = { 'a ' :1 , 'b ' :2} # 这是一个 dict
3 t = ( 'x ' , 'y ' , 'z ' ) # 这是一个 tuple
4 s = set ([1 , 2, 3]) # 这是一个 set
5 s = {1, 2, 3} # 这是一个 set ,2.7 新语法
¦
. . . . . .
逻辑与逻辑运算符
Python 有基本的逻辑类型,多种数据类型参与逻辑判断时,规
则类似于 C 语言。
§
1 >>> True
2 True
3 >>> False
4 False
5 >>> [] and 1 # and / or 运算符
6 []
7 >>> [] or 1 # Python 的隐式逻辑判断规则类似 c
¦
. . . . . .
None
类似于关系型数据库的 NULL
§
1 >>> None
2
3 >>> None and 1
4
5 >>> None or 1
6 1
7 >>> False == None
8 False
¦
. . . . . .
基本流程控制
. . . . . .
逻辑判断
§
1 >>> a = 'x ' if 1 > 2 else 'y ' # i f / else 表达式
2 >>> # Python 强制缩进,每一个冒号符的下一行缩进一级
3 >>> if 0xf > 0b11011101:
4 . . . print 'abc '
5 . . . else :
6 . . . print 123
7 . . .
8 123
¦
. . . . . .
逻辑判断
多重逻辑分支
§
1 >>> if 0 < x <= 2:
2 . . . print '0 < x <= 2 '
3 . . . elif 2 < x <= 4:
4 . . . print '2 < x <= 4 '
5 . . . elif 4 < x <= 8:
6 . . . print '4 < x <= 8 '
7 . . . else :
8 . . . print 'x > 8 '
9 . . .
10 x > 8
¦
. . . . . .
For 循环
Python 的 For 循环基于对线性容器的迭代。
§
1 >>> l = range(5 , 10, 2)
2 >>> for i in l :
3 . . . print i
4 5
5 7
6 9
¦
. . . . . .
迭代仿线性对象
只要接口符合,即使不是线性容器也可以:
§
1 >>> f = open( "sample0.py" )
2 >>> for line in f :
3 . . . print line
4 . . .
¦
. . . . . .
While 循环
C 式的 for 循环与 while 同构,Python 也提供了这种形式:
§
1 >>> x = 10
2 >>> while x % 13 != 0:
3 . . . print x
4 . . . x+=1
5 . . .
6 10
7 11
8 12
¦
. . . . . .
错误与异常
. . . . . .
异常处理
至 Python 2.5 ,Python 已经有了相当完整的异常处理机制
§
1 f = None
2 try :
3 f = open( "sample0.py" )
4 for line in f :
5 print line
6 except Exception as e:
7 print e
8 finally :
9 f . close ()
¦
. . . . . .
With 语句
作为一种退化的形式,with 可以更简洁的保护外部资源,使之
不会因异常而泄漏。
§
1 >>> with open( "sample0.py" ) as f :
2 . . . for line in f :
3 . . . print line
4 . . .
¦
. . . . . .
代码抽象
. . . . . .
函数
`return` 从函数中退出,并携带返回值,
§
1 >>> def foo (x ) : # 基本定义
2 . . . # 2.6 + 的字符串格式化
3 . . . return 'you input {0} ' . format(x)
4 >>> print foo ( ' liuxin2 ' )
5 you input liuxin2
¦
. . . . . .
函数参数技巧
下例涉及参数默认值、可变参数和关键字参数
§
1 def ploynomial(x=0, ∗args , ∗∗keys ) :
2 ploy = {}
3 if x == 0:
4 return 0
5 # 同时迭代出序列索引和元素
6 for times , factor in enumerate(args ) :
7 ploy [times] = factor
¦
. . . . . .
函数参数技巧
续上页
§
1 # 在字典上迭代
2 for times , factor
3 in keys . iteritems ( ) :
4 # 这里运用了切片技巧
5 ploy [ int (times [ 1 : ] ) ] = factor
6 return sum(value∗x∗∗key
7 for key, value
8 in ploy . iteritems ( ) )
¦
. . . . . .
函数参数技巧
使用上例的函数,计算 7 + 2 ∗ x2 + 5 ∗ x3 + 20 ∗ x9 + 21 ∗ x12 在
x = 5 时的值:
§
1 >>> print ploynomial(5 , 7, 2, 5,
2 x9=20, x12=21)
3 5166015767
4 >>> l = [7 , 2, 5]
5 # 这个字典的构造过程也使用了关键字参数
6 >>> d = dict (x9=20, x12=21)
7 >>> print ploynomial(5 , ∗ l , ∗∗d)
¦
. . . . . .
面向对象
Python 的面向对象机制类似 Smalltalk。采用全动态语法。
. . . . . .
类定义
§
1 import datetime
2
3 class MyClass( object ) : # 单根类
4 def i n i t ( self ) : # 显式自引用变量
5 self . create at = 
6 datetime . datetime .now()
7 def s t r ( self ) : # 重载父类的方法
8 return "my create at {0}"
9 . format( self . create at )
¦
. . . . . .
更多自由,更少限制
Python 可以在运行时动态的修改对象结构。
§
1 import new
2 obj = MyClass ()
3 obj . hello = "Hello" # 动态添加成员对象
4 say = lambda self : self . create at
5 obj . say = new. instancemethod(
6 lambda self : self . create at ,
7 obj , MyClass)
8 # 动态添加成员方法,得到 obj .。create at
9 print obj . say ()
¦
. . . . . .
更多自由,更少限制
Python 中没有真正意义的私有成员(可以定义形如 __obj 的
成员以阻止外部访问)。Python 编程风格不强制类型匹配和转
换,通常鼓励直接访问成员。——即所谓 duck typing。
. . . . . .
代码组织
. . . . . .
模块与包
Python 中,每一个文件被视作一个模块(module),每个带有
__init__.py 文件的目录被视作一个包(package)。
. . . . . .
模块与包的搜索
除了当前目录,Python 虚拟机按 sys.path 中的路径搜索包
所在的位置,可以通过以下方式修改:
修改 sys.path
在 sys.path 指定的目录中加入.pth 文件,其中写入路径
文本
定制一个名为 PYTHONPATH 的系统变量
. . . . . .
生存期行为
除非显式 reload ,否则每进程内,每个模块最多加载一次,在
不同位置 import 不会重复加载
. . . . . .
深入 Python
. . . . . .
生成器 yield
. . . . . .
生成器 yield
yield 关键字临时挂起函数,返回值,然后继续执行,最初用于
简写迭代子(iterator)逻辑,现在通常视为实现 coroutine 模
式的通用工具。
§
1 def xrange(x=None, y=None, step=1):
2 . . . # 容错代码,详见示例文件中的 xrange
3 s = start
4 if start < stop and z > 0:
5 while s < stop :
6 yield s
7 s += z
8 elif start > stop and z < 0:
9 while s > stop :
10 yield s
11 s += z
¦
. . . . . .
调用
用生成器和列表推导式生成序列。列表推导式技术随后我们詳細
的讨论。
§
1
2 >>> print [ i for i in xrange(10)]
3 [0 , 1, 2, 3, 4, 5, 6, 7, 8, 9]
4 >>> print [ i for i in xrange(2 , 10)]
5 [2 , 3, 4, 5, 6, 7, 8, 9]
6 >>> print [ i for i in xrange(10, 2)]
7 []
8 >>> print [ i for i in xrange(2 , 10, 5)]
9 [2 , 7]
10 >>> print [ i for i in xrange(10, 2, −1)]
11 [10, 9, 8, 7, 6, 5, 4, 3]
¦
. . . . . .
列表及迭代推导式 comprehension
. . . . . .
推导式
推导式可以方便的生成序列逻辑,可以用于简化
map/filter/reduce 组合。
§
1 >>> [x for x in xrange(5)] #成生列表
2 [0 , 1, 2, 3, 4]
3 >>> # 生成 32˜ 126 的码表
4 >>> dict (( c , chr (c )) for c in range(32, 127))
5 . . .
6 >>> # 组合技巧,生成以内的因数表100
7 >>> l =[(x,y) for x in xrange(1 , 100)
8 for y in xrange(1 , 100)
9 if x>y and x%y==0]
10 >>> # 将上表组合为更为友好的字典形式
11 >>> d = dict ((k , tuple ( t [1] for t in l
12 if t[0]==k ))
13 for k in range(1 , 100))
¦
. . . . . .
修饰器 decorator
. . . . . .
修饰器
修饰器可以将函数“修饰”为完全不同的行为,可以有效的将业务
逻辑正交分解,如用于将权限和身份验证从业务中独立出来。
§
1
2 # 常见的用法
3 @require logined
4 def dosomeing(arg ) :
5 . . .
¦
. . . . . .
定义修饰器
下例我们定义一个修饰器,强制函数参数必须是一个整数。需要
注意的是修符器返回的是修饰后的函数,而不是函数结果。
§
1 def require int ( foo ) :
2 def re (arg ) :
3 if type(arg) == int :
4 return foo (arg)
5 else :
6 raise ValueError (
7 "the arg must be a int " )
8 return re
¦
. . . . . .
使用修饰器
使用刚才的修饰器
§
1 @require int
2 def get it (arg ) :
3 return " I got the %s"%arg
4
5 get it (0) # 正确
6 get it (20) # 正确
7 get it ( 'abc ' ) # 错误,会抛出异常。
¦
. . . . . .
有关闭包实现的讨论
. . . . . .
闭包
闭包模式近几年开始受到关注,在 Python 中有几种方式可以实
现闭包。
. . . . . .
闭包的定义
闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。
在给定函数被多次调用的过程中,这些私有变量能够保持其持久
性。变量的作用域仅限于包含它们的函数,因此无法从其它程序
代码部分进行访问。不过,变量的生存期是可以很长,在一次函
数调用期间所创建所生成的值在下次函数调用时仍然存在。正因
为这一特点,闭包可以用来完成信息隐藏,并进而应用于需要状
态表达的某些编程范型中。——维基百科
. . . . . .
简单的闭包
如果不追求通用的闭包模式,以下就是一个简单的闭包,它有一
个只读的自由变量作用域:
§
1 def closure (base ) :
2 def re (x ) :
3 return base∗∗x
4 return re
¦
. . . . . .
如何携带可变状态?
但是,这种思路构造的闭包,不能自由的修改
§
1 def closure (base ) :
2 accumulation = 0
3 def re (x ) :
4 # 此处会报错
5 accumulation += base∗∗x
6 return accumulation
7 return re
8 # 通过以上方式得到的闭包函数,不能如预期累积计算结果
¦
. . . . . .
修饰器闭包
直接使用修饰器就可以得到功能更强的闭包。但需要一定的" 黑
箱操作"。
§
1 class Closure ( object ) :
2 def i n i t ( self , ∗∗keywords ) :
3 for keyword in keywords:
4 # 这里使用对象的 d i c t 添加数据成员
5 self . d i c t [keyword] = 
6 keywords[keyword]
7 # 重载括号运算符
8 def c a l l ( self , foo ) :
9 def re (∗args , ∗∗keywords ) :
10 keywords[ ' self ' ] = self
11 return foo (∗args , ∗∗keywords)
12 return re
¦
. . . . . .
使用修饰器闭包
可以从以下函数调用中看到函数访问闭包携带的状态所带来的修
改。
§
1 >>> print foo(10)
2 10
3 >>> print foo(20)
4 30
5 >>> print foo(−30)
6 0
¦
. . . . . .
python 3 的闭包
Python 3 中增加了 nonlocal 关键字,允许用户以更精确的方
式控制变量访问的命名域。在 Python 3 中闭包成为一个更自
然、易用的模式。
. . . . . .
双向迭代器与协作模式
. . . . . .
双向 yield
yield 不仅可以用于输入,也可以用于输出,它可以用于实现双
向的协作(coroutine)模式。
§
1 def rolladd ( xstart=1, ystart=1):
2 x = yield xstart
3 y = yield ystart
4 while True :
5 t = y
6 y = x
7 x = yield x+t
¦
. . . . . .
双向 yield 的应用
下例可以生成菲波那切数列,也可以通过初始状态设置和内外交
互,生成其它的数列。
§
1 fabber = rolladd ()
2 x = fabber .send(None)
3 print x
4
5 for i in range(1 , 10):
6 x = fabber .send(x)
7 print x
¦
. . . . . .
常见框架、工具和库
. . . . . .
pypi
pypi 是 Python 社区的在线资源服务,要使用它,需要安装
setuptools 。然后执行 easy install 命名即可安装所需的软件
包。
下面所提到的组件和框架,除了已经内置在 Python 发行版中
的,其它都可以通过这种方式安装
. . . . . .
并发
进程库 subprocess
. . . . . .
并发
进程库 subprocess
并发库(2.6+)multiprocessing
. . . . . .
并发
进程库 subprocess
并发库(2.6+)multiprocessing
线程库 threading/threads
. . . . . .
并发
进程库 subprocess
并发库(2.6+)multiprocessing
线程库 threading/threads
协程并发库(高性能,合作式并发,第三方)gevent
. . . . . .
测试工具
内嵌式的文档式测试工具 doctesting。
. . . . . .
测试工具
内嵌式的文档式测试工具 doctesting。
单元测试工具 unittest
. . . . . .
测试工具
内嵌式的文档式测试工具 doctesting。
单元测试工具 unittest
性能分析工具 profile/cprofile
. . . . . .
数据库驱动
内置的 sqlite3
. . . . . .
数据库驱动
内置的 sqlite3
KV 库 BDB 的封装 shelve.BsdDbShelf
. . . . . .
数据库驱动
内置的 sqlite3
KV 库 BDB 的封装 shelve.BsdDbShelf
mysql 封装 mysqldb
. . . . . .
数据库驱动
内置的 sqlite3
KV 库 BDB 的封装 shelve.BsdDbShelf
mysql 封装 mysqldb
postgresql 封装 psycopg2
. . . . . .
数据库驱动
内置的 sqlite3
KV 库 BDB 的封装 shelve.BsdDbShelf
mysql 封装 mysqldb
postgresql 封装 psycopg2
通用 ORM 工具 SQLAlchemy
. . . . . .
Web 框架
公司使用最多的 Django
. . . . . .
Web 框架
公司使用最多的 Django
值得关注的轻量级框架 web.py
. . . . . .
Web 框架
公司使用最多的 Django
值得关注的轻量级框架 web.py
高性能框架 tornado
. . . . . .
Web 框架
公司使用最多的 Django
值得关注的轻量级框架 web.py
高性能框架 tornado
积木式的 turbogears/pylons
. . . . . .
谢谢大家!再见!
Power By LATEX!

Más contenido relacionado

La actualidad más candente

LazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHPLazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHPLin Yo-An
 
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7Justin Lin
 
Introduction to Basic Haskell Components (In Chinese)
Introduction to Basic Haskell Components (In Chinese)Introduction to Basic Haskell Components (In Chinese)
Introduction to Basic Haskell Components (In Chinese)ChengHui Weng
 
在開始工作以前,我以為我會寫扣。
在開始工作以前,我以為我會寫扣。在開始工作以前,我以為我會寫扣。
在開始工作以前,我以為我會寫扣。Chih-Hsuan Kuo
 
Use Lambdas in Android
Use Lambdas in AndroidUse Lambdas in Android
Use Lambdas in Androidkoji lin
 
Wind.js无障碍调试与排错
Wind.js无障碍调试与排错Wind.js无障碍调试与排错
Wind.js无障碍调试与排错jeffz
 
Python basic - v01
Python   basic - v01Python   basic - v01
Python basic - v01ssuser5e7722
 
Heap exploitation
Heap exploitationHeap exploitation
Heap exploitationAngel Boy
 
Javascript on Fiber - http://fibjs.org
Javascript on Fiber - http://fibjs.orgJavascript on Fiber - http://fibjs.org
Javascript on Fiber - http://fibjs.orgMarc Manthey
 
Jscex:案例、阻碍、体会、展望
Jscex:案例、阻碍、体会、展望Jscex:案例、阻碍、体会、展望
Jscex:案例、阻碍、体会、展望jeffz
 

La actualidad más candente (20)

LazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHPLazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHP
 
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
 
Introduction to Basic Haskell Components (In Chinese)
Introduction to Basic Haskell Components (In Chinese)Introduction to Basic Haskell Components (In Chinese)
Introduction to Basic Haskell Components (In Chinese)
 
在開始工作以前,我以為我會寫扣。
在開始工作以前,我以為我會寫扣。在開始工作以前,我以為我會寫扣。
在開始工作以前,我以為我會寫扣。
 
Ch10 教學
Ch10 教學Ch10 教學
Ch10 教學
 
Ch8
Ch8Ch8
Ch8
 
Use Lambdas in Android
Use Lambdas in AndroidUse Lambdas in Android
Use Lambdas in Android
 
Python串列資料應用
Python串列資料應用Python串列資料應用
Python串列資料應用
 
Ch7 教學
Ch7 教學Ch7 教學
Ch7 教學
 
Ch10 範例
Ch10 範例Ch10 範例
Ch10 範例
 
Wind.js无障碍调试与排错
Wind.js无障碍调试与排错Wind.js无障碍调试与排错
Wind.js无障碍调试与排错
 
Ch7
Ch7Ch7
Ch7
 
Python basic - v01
Python   basic - v01Python   basic - v01
Python basic - v01
 
Heap exploitation
Heap exploitationHeap exploitation
Heap exploitation
 
Python story
Python storyPython story
Python story
 
Ch8 教學
Ch8 教學Ch8 教學
Ch8 教學
 
Javascript on Fiber - http://fibjs.org
Javascript on Fiber - http://fibjs.orgJavascript on Fiber - http://fibjs.org
Javascript on Fiber - http://fibjs.org
 
Jscex:案例、阻碍、体会、展望
Jscex:案例、阻碍、体会、展望Jscex:案例、阻碍、体会、展望
Jscex:案例、阻碍、体会、展望
 
Python元組,字典,集合
Python元組,字典,集合Python元組,字典,集合
Python元組,字典,集合
 
[系列活動] Python爬蟲實戰
[系列活動] Python爬蟲實戰[系列活動] Python爬蟲實戰
[系列活動] Python爬蟲實戰
 

Similar a Python速成指南

Learning python in the motion picture industry by will zhou
Learning python in the motion picture industry   by will zhouLearning python in the motion picture industry   by will zhou
Learning python in the motion picture industry by will zhouWill Zhou
 
Python学习笔记
Python学习笔记Python学习笔记
Python学习笔记Lingfei Kong
 
ES5 introduction
ES5 introductionES5 introduction
ES5 introductionotakustay
 
HITCON CTF 2014 BambooFox 解題心得分享
HITCON CTF 2014 BambooFox 解題心得分享HITCON CTF 2014 BambooFox 解題心得分享
HITCON CTF 2014 BambooFox 解題心得分享Chong-Kuan Chen
 
C++工程实践
C++工程实践C++工程实践
C++工程实践Shuo Chen
 
Python 入門
Python 入門 Python 入門
Python 入門 Andy Yao
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试lydiafly
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档yiditushe
 
Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18Derek Lee
 
The Evolution of Async Programming (GZ TechParty C#)
The Evolution of Async Programming (GZ TechParty C#)The Evolution of Async Programming (GZ TechParty C#)
The Evolution of Async Programming (GZ TechParty C#)jeffz
 
02.python基础
02.python基础02.python基础
02.python基础modou li
 
微博实时搜索
微博实时搜索微博实时搜索
微博实时搜索亚军 汪
 
竞赛中C++语言拾遗
竞赛中C++语言拾遗竞赛中C++语言拾遗
竞赛中C++语言拾遗乐群 陈
 
Oracle Security 101
Oracle Security 101Oracle Security 101
Oracle Security 101Dahui Feng
 
realtime-twitter-search
realtime-twitter-searchrealtime-twitter-search
realtime-twitter-search亚军 汪
 
用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验Leo Zhou
 

Similar a Python速成指南 (20)

Learning python in the motion picture industry by will zhou
Learning python in the motion picture industry   by will zhouLearning python in the motion picture industry   by will zhou
Learning python in the motion picture industry by will zhou
 
Python学习笔记
Python学习笔记Python学习笔记
Python学习笔记
 
ES5 introduction
ES5 introductionES5 introduction
ES5 introduction
 
HITCON CTF 2014 BambooFox 解題心得分享
HITCON CTF 2014 BambooFox 解題心得分享HITCON CTF 2014 BambooFox 解題心得分享
HITCON CTF 2014 BambooFox 解題心得分享
 
C++工程实践
C++工程实践C++工程实践
C++工程实践
 
Python 入門
Python 入門 Python 入門
Python 入門
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
 
Ooredis
OoredisOoredis
Ooredis
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档
 
Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18
 
Python變數與資料運算
Python變數與資料運算Python變數與資料運算
Python變數與資料運算
 
The Evolution of Async Programming (GZ TechParty C#)
The Evolution of Async Programming (GZ TechParty C#)The Evolution of Async Programming (GZ TechParty C#)
The Evolution of Async Programming (GZ TechParty C#)
 
02.python基础
02.python基础02.python基础
02.python基础
 
getPDF.aspx
getPDF.aspxgetPDF.aspx
getPDF.aspx
 
getPDF.aspx
getPDF.aspxgetPDF.aspx
getPDF.aspx
 
微博实时搜索
微博实时搜索微博实时搜索
微博实时搜索
 
竞赛中C++语言拾遗
竞赛中C++语言拾遗竞赛中C++语言拾遗
竞赛中C++语言拾遗
 
Oracle Security 101
Oracle Security 101Oracle Security 101
Oracle Security 101
 
realtime-twitter-search
realtime-twitter-searchrealtime-twitter-search
realtime-twitter-search
 
用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验用Cython封装c++代码为python模块的一点经验
用Cython封装c++代码为python模块的一点经验
 

Más de March Liu

Jaskell Core Parsec
Jaskell Core ParsecJaskell Core Parsec
Jaskell Core ParsecMarch Liu
 
轻量级文本工具集
轻量级文本工具集轻量级文本工具集
轻量级文本工具集March Liu
 
奇点与未来
奇点与未来奇点与未来
奇点与未来March Liu
 
尼尔盖曼的美国众神
尼尔盖曼的美国众神尼尔盖曼的美国众神
尼尔盖曼的美国众神March Liu
 
创业项目中常见的技术和管理债务
创业项目中常见的技术和管理债务创业项目中常见的技术和管理债务
创业项目中常见的技术和管理债务March Liu
 
It工程师的职业成长
It工程师的职业成长It工程师的职业成长
It工程师的职业成长March Liu
 
Xcode tutorial
Xcode tutorialXcode tutorial
Xcode tutorialMarch Liu
 
Socrates Used PostgreSQL and SQLAlchemy
Socrates Used PostgreSQL and SQLAlchemySocrates Used PostgreSQL and SQLAlchemy
Socrates Used PostgreSQL and SQLAlchemyMarch Liu
 
PostgreSQL 9 1 新特性
PostgreSQL 9 1 新特性PostgreSQL 9 1 新特性
PostgreSQL 9 1 新特性March Liu
 
Emacs Introduction
Emacs IntroductionEmacs Introduction
Emacs IntroductionMarch Liu
 
软件开发工程化的个人体验
软件开发工程化的个人体验软件开发工程化的个人体验
软件开发工程化的个人体验March Liu
 
Python 数据库技术第三讲
Python 数据库技术第三讲Python 数据库技术第三讲
Python 数据库技术第三讲March Liu
 
Python 数据库技术讲座(二)
Python 数据库技术讲座(二)Python 数据库技术讲座(二)
Python 数据库技术讲座(二)March Liu
 
Python 数据库技术讲座(一)
Python 数据库技术讲座(一)Python 数据库技术讲座(一)
Python 数据库技术讲座(一)March Liu
 
Python 数据库技术
Python 数据库技术Python 数据库技术
Python 数据库技术March Liu
 
PostgreSQL 9 的 standby 集群实践
PostgreSQL 9 的 standby 集群实践PostgreSQL 9 的 standby 集群实践
PostgreSQL 9 的 standby 集群实践March Liu
 
PostgreSQL 9 Standby
PostgreSQL 9 StandbyPostgreSQL 9 Standby
PostgreSQL 9 StandbyMarch Liu
 
基于 PostgreSQL 的关系型数据库方案
基于 PostgreSQL 的关系型数据库方案基于 PostgreSQL 的关系型数据库方案
基于 PostgreSQL 的关系型数据库方案March Liu
 
1 Python简介
1 Python简介1 Python简介
1 Python简介March Liu
 

Más de March Liu (20)

Jaskell Core Parsec
Jaskell Core ParsecJaskell Core Parsec
Jaskell Core Parsec
 
轻量级文本工具集
轻量级文本工具集轻量级文本工具集
轻量级文本工具集
 
奇点与未来
奇点与未来奇点与未来
奇点与未来
 
尼尔盖曼的美国众神
尼尔盖曼的美国众神尼尔盖曼的美国众神
尼尔盖曼的美国众神
 
创业项目中常见的技术和管理债务
创业项目中常见的技术和管理债务创业项目中常见的技术和管理债务
创业项目中常见的技术和管理债务
 
It工程师的职业成长
It工程师的职业成长It工程师的职业成长
It工程师的职业成长
 
Xcode tutorial
Xcode tutorialXcode tutorial
Xcode tutorial
 
Socrates Used PostgreSQL and SQLAlchemy
Socrates Used PostgreSQL and SQLAlchemySocrates Used PostgreSQL and SQLAlchemy
Socrates Used PostgreSQL and SQLAlchemy
 
PostgreSQL 9 1 新特性
PostgreSQL 9 1 新特性PostgreSQL 9 1 新特性
PostgreSQL 9 1 新特性
 
Emacs Introduction
Emacs IntroductionEmacs Introduction
Emacs Introduction
 
软件开发工程化的个人体验
软件开发工程化的个人体验软件开发工程化的个人体验
软件开发工程化的个人体验
 
Python 数据库技术第三讲
Python 数据库技术第三讲Python 数据库技术第三讲
Python 数据库技术第三讲
 
Python 数据库技术讲座(二)
Python 数据库技术讲座(二)Python 数据库技术讲座(二)
Python 数据库技术讲座(二)
 
Python 数据库技术讲座(一)
Python 数据库技术讲座(一)Python 数据库技术讲座(一)
Python 数据库技术讲座(一)
 
Python 数据库技术
Python 数据库技术Python 数据库技术
Python 数据库技术
 
PostgreSQL 9 的 standby 集群实践
PostgreSQL 9 的 standby 集群实践PostgreSQL 9 的 standby 集群实践
PostgreSQL 9 的 standby 集群实践
 
PostgreSQL 9 Standby
PostgreSQL 9 StandbyPostgreSQL 9 Standby
PostgreSQL 9 Standby
 
基于 PostgreSQL 的关系型数据库方案
基于 PostgreSQL 的关系型数据库方案基于 PostgreSQL 的关系型数据库方案
基于 PostgreSQL 的关系型数据库方案
 
About Me
About MeAbout Me
About Me
 
1 Python简介
1 Python简介1 Python简介
1 Python简介
 

Último

Grade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxGrade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxPriscilleXu
 
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制gravestomas0
 
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书kathrynalvarez364
 
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制bairnshajjes
 
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书kathrynalvarez364
 
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制kathrynalvarez364
 
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptxJAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptxCHANSUITNEEMoe
 
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdfshanshanhui1
 
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...黑客 接单【TG/微信qoqoqdqd】
 
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单jakepaige317
 

Último (10)

Grade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxGrade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptx
 
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
 
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
 
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
 
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
 
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
 
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptxJAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
 
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
 
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
 
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
 

Python速成指南

  • 1. . . . . . . Python 语言速成 刘鑫 <liuxin2@kingsoft.com> 两小时内学会 Python November 11, 2010
  • 2. . . . . . . 预备内容
  • 3. . . . . . . 目标人群 有其它语言经验的技术人员
  • 4. . . . . . . 目标人群 有其它语言经验的技术人员 对 Python 很少或没有了解
  • 5. . . . . . . 目标人群 有其它语言经验的技术人员 对 Python 很少或没有了解 想要短时间学会实用的 Python 编程知识
  • 6. . . . . . . 目标人群 有其它语言经验的技术人员 对 Python 很少或没有了解 想要短时间学会实用的 Python 编程知识 想要了解深入学习 Python 的切入点
  • 7. . . . . . . 我们的目标 了解常用的 Python 开发环境
  • 8. . . . . . . 我们的目标 了解常用的 Python 开发环境 Python 的基本语法,达到可用程度
  • 9. . . . . . . 我们的目标 了解常用的 Python 开发环境 Python 的基本语法,达到可用程度 了解一些常用的小技巧
  • 10. . . . . . . 我们的目标 了解常用的 Python 开发环境 Python 的基本语法,达到可用程度 了解一些常用的小技巧 了解 Python “特有”的一些开发方法
  • 11. . . . . . . 我们的目标 了解常用的 Python 开发环境 Python 的基本语法,达到可用程度 了解一些常用的小技巧 了解 Python “特有”的一些开发方法 学会管理 Python 环境
  • 12. . . . . . . 我们的目标 了解常用的 Python 开发环境 Python 的基本语法,达到可用程度 了解一些常用的小技巧 了解 Python “特有”的一些开发方法 学会管理 Python 环境 面向 2.6/2.7 版
  • 13. . . . . . . Python 环境
  • 14. . . . . . . Python Shell Python Shell 对于 Python 使用者来说是重要的工作环境,所 以除了内置的命令行,还有一些强化的 Shell 环境。Python 开 发工具中也有一些提供了内置的 Python Shell。
  • 15. . . . . . . Pure Python Shell Python 内置提供两套命 令行环境:基于控制台的 交互环境和基于 TK 图形 系统的 IDLE。 Figure: Python
  • 16. . . . . . . Pure Python Shell IPython 是 Python 官方 文档中推荐的第三方扩展 Shell ,易学易用,外观 友好,功能丰富,与系统 环境融合良好,是非常好 用的交互式环境。 Figure: IPython
  • 17. . . . . . . Pure Python Shell BPython 外观优美,提 供了很多实用的 Python 命令行功能,如自动完 成,代码提示,代码保 存,命令行回溯等,是一 个非常有特点的 Python Shell。 Figure: BPython
  • 18. . . . . . . 常见开发工具 IDLE
  • 19. . . . . . . 常见开发工具 IDLE Emacs/VIM
  • 20. . . . . . . 常见开发工具 IDLE Emacs/VIM PyDev
  • 21. . . . . . . 常见开发工具 IDLE Emacs/VIM PyDev 第三方编辑器
  • 22. . . . . . . 工具选择的几个参考因素 支持 Python 語法加亮
  • 23. . . . . . . 工具选择的几个参考因素 支持 Python 語法加亮 智能缩进
  • 24. . . . . . . 工具选择的几个参考因素 支持 Python 語法加亮 智能缩进 TAB/空格转换
  • 25. . . . . . . 工具选择的几个参考因素 支持 Python 語法加亮 智能缩进 TAB/空格转换 多内码支持
  • 26. . . . . . . 基本语法
  • 27. . . . . . . 变量、命名与数据类型
  • 28. . . . . . . Hello World § 1 >>> print "Hello World" #我是注释 2 Hello World 3 >>> print u"你好!" #这里是一个字符串unicode你好 ¦
  • 29. . . . . . . 变量、命名与对象 Python 中使用变量无需声明,每一个命名赋值后即在其命名域 中生效,成为一个变量,每个命名都绑定到一个对象。 § 1 >>> print x # 会出错 2 . . . 3 >>> x = " I 'm a var" #赋值即定义 4 >>> print x 5 I 'm a var ¦
  • 30. . . . . . . 桌面计算器 Python 有无限长数值类型,支持各数数值计算。 § 1 >>> 20 ∗ 5.0 # 普通数学运算 2 100.0 3 >>> 7 ∗∗ 2 # 幂运算 4 49 5 >>> 1 + 2j # 内置复数类型 6 (1+2j ) 7 >>> import math # 导入模块 8 >>> dir (math) # 查看 math 9 . . . 10 >>> help (math. sin ) # 自省 11 . . . 12 # 欧拉公式,限于浮点精度,得到一个极小复数 13 >>> math.e∗∗(math. pi∗1 j)+1 14 1.2246063538223773e−16j ¦
  • 31. . . . . . . “面向数据结构”的 Python 对于 Python 来说,内置的数据结构不仅仅是语法糖,更是 Python 架构的基本组成部分。 § 1 l = [ '1 ' , 2, 'abc ' , None] # 这是一个 List 2 d = { 'a ' :1 , 'b ' :2} # 这是一个 dict 3 t = ( 'x ' , 'y ' , 'z ' ) # 这是一个 tuple 4 s = set ([1 , 2, 3]) # 这是一个 set 5 s = {1, 2, 3} # 这是一个 set ,2.7 新语法 ¦
  • 32. . . . . . . 逻辑与逻辑运算符 Python 有基本的逻辑类型,多种数据类型参与逻辑判断时,规 则类似于 C 语言。 § 1 >>> True 2 True 3 >>> False 4 False 5 >>> [] and 1 # and / or 运算符 6 [] 7 >>> [] or 1 # Python 的隐式逻辑判断规则类似 c ¦
  • 33. . . . . . . None 类似于关系型数据库的 NULL § 1 >>> None 2 3 >>> None and 1 4 5 >>> None or 1 6 1 7 >>> False == None 8 False ¦
  • 34. . . . . . . 基本流程控制
  • 35. . . . . . . 逻辑判断 § 1 >>> a = 'x ' if 1 > 2 else 'y ' # i f / else 表达式 2 >>> # Python 强制缩进,每一个冒号符的下一行缩进一级 3 >>> if 0xf > 0b11011101: 4 . . . print 'abc ' 5 . . . else : 6 . . . print 123 7 . . . 8 123 ¦
  • 36. . . . . . . 逻辑判断 多重逻辑分支 § 1 >>> if 0 < x <= 2: 2 . . . print '0 < x <= 2 ' 3 . . . elif 2 < x <= 4: 4 . . . print '2 < x <= 4 ' 5 . . . elif 4 < x <= 8: 6 . . . print '4 < x <= 8 ' 7 . . . else : 8 . . . print 'x > 8 ' 9 . . . 10 x > 8 ¦
  • 37. . . . . . . For 循环 Python 的 For 循环基于对线性容器的迭代。 § 1 >>> l = range(5 , 10, 2) 2 >>> for i in l : 3 . . . print i 4 5 5 7 6 9 ¦
  • 38. . . . . . . 迭代仿线性对象 只要接口符合,即使不是线性容器也可以: § 1 >>> f = open( "sample0.py" ) 2 >>> for line in f : 3 . . . print line 4 . . . ¦
  • 39. . . . . . . While 循环 C 式的 for 循环与 while 同构,Python 也提供了这种形式: § 1 >>> x = 10 2 >>> while x % 13 != 0: 3 . . . print x 4 . . . x+=1 5 . . . 6 10 7 11 8 12 ¦
  • 40. . . . . . . 错误与异常
  • 41. . . . . . . 异常处理 至 Python 2.5 ,Python 已经有了相当完整的异常处理机制 § 1 f = None 2 try : 3 f = open( "sample0.py" ) 4 for line in f : 5 print line 6 except Exception as e: 7 print e 8 finally : 9 f . close () ¦
  • 42. . . . . . . With 语句 作为一种退化的形式,with 可以更简洁的保护外部资源,使之 不会因异常而泄漏。 § 1 >>> with open( "sample0.py" ) as f : 2 . . . for line in f : 3 . . . print line 4 . . . ¦
  • 43. . . . . . . 代码抽象
  • 44. . . . . . . 函数 `return` 从函数中退出,并携带返回值, § 1 >>> def foo (x ) : # 基本定义 2 . . . # 2.6 + 的字符串格式化 3 . . . return 'you input {0} ' . format(x) 4 >>> print foo ( ' liuxin2 ' ) 5 you input liuxin2 ¦
  • 45. . . . . . . 函数参数技巧 下例涉及参数默认值、可变参数和关键字参数 § 1 def ploynomial(x=0, ∗args , ∗∗keys ) : 2 ploy = {} 3 if x == 0: 4 return 0 5 # 同时迭代出序列索引和元素 6 for times , factor in enumerate(args ) : 7 ploy [times] = factor ¦
  • 46. . . . . . . 函数参数技巧 续上页 § 1 # 在字典上迭代 2 for times , factor 3 in keys . iteritems ( ) : 4 # 这里运用了切片技巧 5 ploy [ int (times [ 1 : ] ) ] = factor 6 return sum(value∗x∗∗key 7 for key, value 8 in ploy . iteritems ( ) ) ¦
  • 47. . . . . . . 函数参数技巧 使用上例的函数,计算 7 + 2 ∗ x2 + 5 ∗ x3 + 20 ∗ x9 + 21 ∗ x12 在 x = 5 时的值: § 1 >>> print ploynomial(5 , 7, 2, 5, 2 x9=20, x12=21) 3 5166015767 4 >>> l = [7 , 2, 5] 5 # 这个字典的构造过程也使用了关键字参数 6 >>> d = dict (x9=20, x12=21) 7 >>> print ploynomial(5 , ∗ l , ∗∗d) ¦
  • 48. . . . . . . 面向对象 Python 的面向对象机制类似 Smalltalk。采用全动态语法。
  • 49. . . . . . . 类定义 § 1 import datetime 2 3 class MyClass( object ) : # 单根类 4 def i n i t ( self ) : # 显式自引用变量 5 self . create at = 6 datetime . datetime .now() 7 def s t r ( self ) : # 重载父类的方法 8 return "my create at {0}" 9 . format( self . create at ) ¦
  • 50. . . . . . . 更多自由,更少限制 Python 可以在运行时动态的修改对象结构。 § 1 import new 2 obj = MyClass () 3 obj . hello = "Hello" # 动态添加成员对象 4 say = lambda self : self . create at 5 obj . say = new. instancemethod( 6 lambda self : self . create at , 7 obj , MyClass) 8 # 动态添加成员方法,得到 obj .。create at 9 print obj . say () ¦
  • 51. . . . . . . 更多自由,更少限制 Python 中没有真正意义的私有成员(可以定义形如 __obj 的 成员以阻止外部访问)。Python 编程风格不强制类型匹配和转 换,通常鼓励直接访问成员。——即所谓 duck typing。
  • 52. . . . . . . 代码组织
  • 53. . . . . . . 模块与包 Python 中,每一个文件被视作一个模块(module),每个带有 __init__.py 文件的目录被视作一个包(package)。
  • 54. . . . . . . 模块与包的搜索 除了当前目录,Python 虚拟机按 sys.path 中的路径搜索包 所在的位置,可以通过以下方式修改: 修改 sys.path 在 sys.path 指定的目录中加入.pth 文件,其中写入路径 文本 定制一个名为 PYTHONPATH 的系统变量
  • 55. . . . . . . 生存期行为 除非显式 reload ,否则每进程内,每个模块最多加载一次,在 不同位置 import 不会重复加载
  • 56. . . . . . . 深入 Python
  • 57. . . . . . . 生成器 yield
  • 58. . . . . . . 生成器 yield yield 关键字临时挂起函数,返回值,然后继续执行,最初用于 简写迭代子(iterator)逻辑,现在通常视为实现 coroutine 模 式的通用工具。 § 1 def xrange(x=None, y=None, step=1): 2 . . . # 容错代码,详见示例文件中的 xrange 3 s = start 4 if start < stop and z > 0: 5 while s < stop : 6 yield s 7 s += z 8 elif start > stop and z < 0: 9 while s > stop : 10 yield s 11 s += z ¦
  • 59. . . . . . . 调用 用生成器和列表推导式生成序列。列表推导式技术随后我们詳細 的讨论。 § 1 2 >>> print [ i for i in xrange(10)] 3 [0 , 1, 2, 3, 4, 5, 6, 7, 8, 9] 4 >>> print [ i for i in xrange(2 , 10)] 5 [2 , 3, 4, 5, 6, 7, 8, 9] 6 >>> print [ i for i in xrange(10, 2)] 7 [] 8 >>> print [ i for i in xrange(2 , 10, 5)] 9 [2 , 7] 10 >>> print [ i for i in xrange(10, 2, −1)] 11 [10, 9, 8, 7, 6, 5, 4, 3] ¦
  • 60. . . . . . . 列表及迭代推导式 comprehension
  • 61. . . . . . . 推导式 推导式可以方便的生成序列逻辑,可以用于简化 map/filter/reduce 组合。 § 1 >>> [x for x in xrange(5)] #成生列表 2 [0 , 1, 2, 3, 4] 3 >>> # 生成 32˜ 126 的码表 4 >>> dict (( c , chr (c )) for c in range(32, 127)) 5 . . . 6 >>> # 组合技巧,生成以内的因数表100 7 >>> l =[(x,y) for x in xrange(1 , 100) 8 for y in xrange(1 , 100) 9 if x>y and x%y==0] 10 >>> # 将上表组合为更为友好的字典形式 11 >>> d = dict ((k , tuple ( t [1] for t in l 12 if t[0]==k )) 13 for k in range(1 , 100)) ¦
  • 62. . . . . . . 修饰器 decorator
  • 63. . . . . . . 修饰器 修饰器可以将函数“修饰”为完全不同的行为,可以有效的将业务 逻辑正交分解,如用于将权限和身份验证从业务中独立出来。 § 1 2 # 常见的用法 3 @require logined 4 def dosomeing(arg ) : 5 . . . ¦
  • 64. . . . . . . 定义修饰器 下例我们定义一个修饰器,强制函数参数必须是一个整数。需要 注意的是修符器返回的是修饰后的函数,而不是函数结果。 § 1 def require int ( foo ) : 2 def re (arg ) : 3 if type(arg) == int : 4 return foo (arg) 5 else : 6 raise ValueError ( 7 "the arg must be a int " ) 8 return re ¦
  • 65. . . . . . . 使用修饰器 使用刚才的修饰器 § 1 @require int 2 def get it (arg ) : 3 return " I got the %s"%arg 4 5 get it (0) # 正确 6 get it (20) # 正确 7 get it ( 'abc ' ) # 错误,会抛出异常。 ¦
  • 66. . . . . . . 有关闭包实现的讨论
  • 67. . . . . . . 闭包 闭包模式近几年开始受到关注,在 Python 中有几种方式可以实 现闭包。
  • 68. . . . . . . 闭包的定义 闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。 在给定函数被多次调用的过程中,这些私有变量能够保持其持久 性。变量的作用域仅限于包含它们的函数,因此无法从其它程序 代码部分进行访问。不过,变量的生存期是可以很长,在一次函 数调用期间所创建所生成的值在下次函数调用时仍然存在。正因 为这一特点,闭包可以用来完成信息隐藏,并进而应用于需要状 态表达的某些编程范型中。——维基百科
  • 69. . . . . . . 简单的闭包 如果不追求通用的闭包模式,以下就是一个简单的闭包,它有一 个只读的自由变量作用域: § 1 def closure (base ) : 2 def re (x ) : 3 return base∗∗x 4 return re ¦
  • 70. . . . . . . 如何携带可变状态? 但是,这种思路构造的闭包,不能自由的修改 § 1 def closure (base ) : 2 accumulation = 0 3 def re (x ) : 4 # 此处会报错 5 accumulation += base∗∗x 6 return accumulation 7 return re 8 # 通过以上方式得到的闭包函数,不能如预期累积计算结果 ¦
  • 71. . . . . . . 修饰器闭包 直接使用修饰器就可以得到功能更强的闭包。但需要一定的" 黑 箱操作"。 § 1 class Closure ( object ) : 2 def i n i t ( self , ∗∗keywords ) : 3 for keyword in keywords: 4 # 这里使用对象的 d i c t 添加数据成员 5 self . d i c t [keyword] = 6 keywords[keyword] 7 # 重载括号运算符 8 def c a l l ( self , foo ) : 9 def re (∗args , ∗∗keywords ) : 10 keywords[ ' self ' ] = self 11 return foo (∗args , ∗∗keywords) 12 return re ¦
  • 72. . . . . . . 使用修饰器闭包 可以从以下函数调用中看到函数访问闭包携带的状态所带来的修 改。 § 1 >>> print foo(10) 2 10 3 >>> print foo(20) 4 30 5 >>> print foo(−30) 6 0 ¦
  • 73. . . . . . . python 3 的闭包 Python 3 中增加了 nonlocal 关键字,允许用户以更精确的方 式控制变量访问的命名域。在 Python 3 中闭包成为一个更自 然、易用的模式。
  • 74. . . . . . . 双向迭代器与协作模式
  • 75. . . . . . . 双向 yield yield 不仅可以用于输入,也可以用于输出,它可以用于实现双 向的协作(coroutine)模式。 § 1 def rolladd ( xstart=1, ystart=1): 2 x = yield xstart 3 y = yield ystart 4 while True : 5 t = y 6 y = x 7 x = yield x+t ¦
  • 76. . . . . . . 双向 yield 的应用 下例可以生成菲波那切数列,也可以通过初始状态设置和内外交 互,生成其它的数列。 § 1 fabber = rolladd () 2 x = fabber .send(None) 3 print x 4 5 for i in range(1 , 10): 6 x = fabber .send(x) 7 print x ¦
  • 77. . . . . . . 常见框架、工具和库
  • 78. . . . . . . pypi pypi 是 Python 社区的在线资源服务,要使用它,需要安装 setuptools 。然后执行 easy install 命名即可安装所需的软件 包。 下面所提到的组件和框架,除了已经内置在 Python 发行版中 的,其它都可以通过这种方式安装
  • 79. . . . . . . 并发 进程库 subprocess
  • 80. . . . . . . 并发 进程库 subprocess 并发库(2.6+)multiprocessing
  • 81. . . . . . . 并发 进程库 subprocess 并发库(2.6+)multiprocessing 线程库 threading/threads
  • 82. . . . . . . 并发 进程库 subprocess 并发库(2.6+)multiprocessing 线程库 threading/threads 协程并发库(高性能,合作式并发,第三方)gevent
  • 83. . . . . . . 测试工具 内嵌式的文档式测试工具 doctesting。
  • 84. . . . . . . 测试工具 内嵌式的文档式测试工具 doctesting。 单元测试工具 unittest
  • 85. . . . . . . 测试工具 内嵌式的文档式测试工具 doctesting。 单元测试工具 unittest 性能分析工具 profile/cprofile
  • 86. . . . . . . 数据库驱动 内置的 sqlite3
  • 87. . . . . . . 数据库驱动 内置的 sqlite3 KV 库 BDB 的封装 shelve.BsdDbShelf
  • 88. . . . . . . 数据库驱动 内置的 sqlite3 KV 库 BDB 的封装 shelve.BsdDbShelf mysql 封装 mysqldb
  • 89. . . . . . . 数据库驱动 内置的 sqlite3 KV 库 BDB 的封装 shelve.BsdDbShelf mysql 封装 mysqldb postgresql 封装 psycopg2
  • 90. . . . . . . 数据库驱动 内置的 sqlite3 KV 库 BDB 的封装 shelve.BsdDbShelf mysql 封装 mysqldb postgresql 封装 psycopg2 通用 ORM 工具 SQLAlchemy
  • 91. . . . . . . Web 框架 公司使用最多的 Django
  • 92. . . . . . . Web 框架 公司使用最多的 Django 值得关注的轻量级框架 web.py
  • 93. . . . . . . Web 框架 公司使用最多的 Django 值得关注的轻量级框架 web.py 高性能框架 tornado
  • 94. . . . . . . Web 框架 公司使用最多的 Django 值得关注的轻量级框架 web.py 高性能框架 tornado 积木式的 turbogears/pylons
  • 95. . . . . . . 谢谢大家!再见! Power By LATEX!