SlideShare une entreprise Scribd logo
1  sur  32
Python Story 陈小玉  <smallfish.xy@gmail.com> twitter: @nnfish blog:  http://chenxiaoyu.org
历史由来 阿姆斯特丹 1989 年圣诞节期间 Guido van Rossum  为了打发圣诞节的无趣 决心开发一种新的解释性程序 … 不久之后,一个叫 Python 的语言就诞生了! 注: Guido 又称龟叔或者莽爹  :_)
能做什么 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
谁在用 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
优势 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
版本信息 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
目录结构 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
优秀项目 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
hello, world
语法特点 ,[object Object],[object Object],[object Object]
代码截图
序列( 1 ) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
序列( 2 ) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
序列切片 >>> a = 'abcd' >>>  print  a[1:3] bc >>>  print  a[1:] bcd >>>  print  a[:] abcd >>>  print  a[:3] abc >>>  print  a[:-1] abc >>>  print  a[-2] c 字符串反转 >>>  print  a[::-1] dcba a b c d 0 1 2 3 -4 -3 -2 -1
字典( 1 ) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
字典( 2 ) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
集合 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],去除某数组内重复数据 a = ['aaa', 'bbb', 'ccc', 'aaa', 'ddd', 'aaa'] >>> list(set(a))  ['aaa', 'bbb', 'ccc', 'ddd']
流程控制 if  a == 1: print  'aaa' else : print  'bbb' if  b == 1: print  '111' elif  b == 2: print   '222' else : print  '000' while  a < 10: print  a a += 1  for   item  in  (1, 2, 3): print  item d = {'name': 'smallfish', 'age': 20} for  k  in  d: print  k, d[k] for  k, v  in  d.items(): print  k, v 输出 age 20 name smallfish
函数( 1 ) def  hello(name): &quot;hello function, name is param&quot; print  &quot;hello&quot;, name >>>  print  hello.__doc__ hello function, name is param >>> hello('smallfish') hello smallfish #  给函数参数加默认值 def  hello(name='smallfish'): #  同上代码 >>> hello() hello smallfish >>> hello('chenxiaoyu') hello chenxiaoyu
函数( 2 ) #  不定参数 def  hello(*args, **kwargs): print  args print  kwargs >>> hello() () {} >>> hello(1, 2, 3) (1, 2, 3) {} >>> hello(1, 2, 3, a='aa', b='bb') (1, 2, 3) {'a': 'aa', 'b': 'bb'} >>>
函数( 3 ) lambda 函数 简单函数: def lowercase(x): return x.lower() 其实可以这么写: lowercase = lambda x: x.lower()
内置函数 >>>  help(re) Help on module re: NAME re - Support for regular expressions (RE). FILE d:ython27ibe.py DESCRIPTION … >>>  dir(re) ['DEBUG', 'DOTALL', ..., 'sys', 'template'] >>>  globals() {'a': 'abcd', '__builtins__': <module '__builtin__' (built-in)> … } locals() vars()  输出基本同上 >>>  type(re) <type 'module'> >>>  type('aa') <type 'str'>
Class class  User: def  __init__(self, name): self.name = name def  get_name(self): return self.name >>> u = User('smallfish') >>>  print  u.get_name() smallfish
模块 # user.py def  hello(name): print  'hello', name class  User: def  __init__(self, name): self.name = name def  get_name(self): return self.name >>>  import  user >>>  dir (user) ['User', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'hello'] >>> user.hello('smallfish') hello smallfish >>> u = user.User('smallfish') >>>  print  u.get_name() smallfish
列表推导 L ist  C omprehension (适用于 dict , tuple , str ) 过滤数组中除以 2 等于 0 的元素: tmp = [] items = [1, 2, 3, 4, 5] for i in items: if i % 2 == 0: tmp.append(i) #  其实可以这么做: >>> [item  for  item  in  items  if  item % 2 == 0] [2, 4] #  每个元素都乘以 2 >>> [item * 2  for  item  in  items] [2, 4, 6, 8, 10]
修饰器( 1 ) Decorator , Python2.4 之后新加特性! 问题:想记录每个函数执行多少时间? def hello():   start = time.time() …  run code print time.time() – start 是不是太丑了点?用修饰器吧。 先写一个包装函数: def time_wrapper(func): def _wrapper(*args, **kwargs): start = time.time() func(*args, **kwargs) print func.__name__, time.time() – start return _wrapper
修饰器( 2 ) 测试函数: def hello(n): sum = 0 for i in range(n): sum += I return sum 我们可以这样调用: a = time_wrapper(hello) print a(100) 这个不稀奇,还可以这样写: @time_wrapper def hello(n): …  同上 >>> hello(1000000) hello 0.265000104904
示例代码( 1 ) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
示例代码( 2 ) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
示例代码( 3 ) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
其他资源 ,[object Object],[object Object],[object Object],[object Object]
结束 print   &quot; Thanks! &quot; import  sys sys.exit(0)

Contenu connexe

Tendances

Python入門:5大概念初心者必備
Python入門:5大概念初心者必備Python入門:5大概念初心者必備
Python入門:5大概念初心者必備Derek Lee
 
Python 于 webgame 的应用
Python 于 webgame 的应用Python 于 webgame 的应用
Python 于 webgame 的应用勇浩 赖
 
中心教员Java面试题1
中心教员Java面试题1中心教员Java面试题1
中心教员Java面试题1yiditushe
 
论 Python 与设计模式。
论 Python 与设计模式。论 Python 与设计模式。
论 Python 与设计模式。勇浩 赖
 
Python速成指南
Python速成指南Python速成指南
Python速成指南March Liu
 
页游开发中的 Python 组件与模式
页游开发中的 Python 组件与模式页游开发中的 Python 组件与模式
页游开发中的 Python 组件与模式勇浩 赖
 
基于XMPP的Gtalk机器人
基于XMPP的Gtalk机器人基于XMPP的Gtalk机器人
基于XMPP的Gtalk机器人roamin9 Zhou
 
手把手打開Python資料分析大門
手把手打開Python資料分析大門手把手打開Python資料分析大門
手把手打開Python資料分析大門Yen-lung Tsai
 
Python实现协同过滤
Python实现协同过滤Python实现协同过滤
Python实现协同过滤home
 

Tendances (20)

Python入門:5大概念初心者必備
Python入門:5大概念初心者必備Python入門:5大概念初心者必備
Python入門:5大概念初心者必備
 
Python 于 webgame 的应用
Python 于 webgame 的应用Python 于 webgame 的应用
Python 于 webgame 的应用
 
Ch7 範例
Ch7 範例Ch7 範例
Ch7 範例
 
中心教员Java面试题1
中心教员Java面试题1中心教员Java面试题1
中心教员Java面试题1
 
Ch4
Ch4Ch4
Ch4
 
Python Basic
Python  BasicPython  Basic
Python Basic
 
Ch10 範例
Ch10 範例Ch10 範例
Ch10 範例
 
Ch10 教學
Ch10 教學Ch10 教學
Ch10 教學
 
Ch4 教學
Ch4 教學Ch4 教學
Ch4 教學
 
Ch7 教學
Ch7 教學Ch7 教學
Ch7 教學
 
论 Python 与设计模式。
论 Python 与设计模式。论 Python 与设计模式。
论 Python 与设计模式。
 
Ch5 教學
Ch5 教學Ch5 教學
Ch5 教學
 
Python速成指南
Python速成指南Python速成指南
Python速成指南
 
页游开发中的 Python 组件与模式
页游开发中的 Python 组件与模式页游开发中的 Python 组件与模式
页游开发中的 Python 组件与模式
 
Ch12 教學
Ch12 教學Ch12 教學
Ch12 教學
 
Ch9 教學
Ch9 教學Ch9 教學
Ch9 教學
 
基于XMPP的Gtalk机器人
基于XMPP的Gtalk机器人基于XMPP的Gtalk机器人
基于XMPP的Gtalk机器人
 
手把手打開Python資料分析大門
手把手打開Python資料分析大門手把手打開Python資料分析大門
手把手打開Python資料分析大門
 
Ch5
Ch5Ch5
Ch5
 
Python实现协同过滤
Python实现协同过滤Python实现协同过滤
Python实现协同过滤
 

En vedette

Saving Gaia with GeoDjango
Saving Gaia with GeoDjangoSaving Gaia with GeoDjango
Saving Gaia with GeoDjangoCalvin Cheng
 
Desenvolvimento de aplicações geográficas utilizando Django/Geodjango
Desenvolvimento de aplicações geográficas utilizando Django/GeodjangoDesenvolvimento de aplicações geográficas utilizando Django/Geodjango
Desenvolvimento de aplicações geográficas utilizando Django/GeodjangoRafael Chagas
 
KISD E-Rate Overview
KISD E-Rate OverviewKISD E-Rate Overview
KISD E-Rate OverviewEnidL
 
Django101 geodjango
Django101 geodjangoDjango101 geodjango
Django101 geodjangoCalvin Cheng
 

En vedette (6)

Saving Gaia with GeoDjango
Saving Gaia with GeoDjangoSaving Gaia with GeoDjango
Saving Gaia with GeoDjango
 
Desenvolvimento de aplicações geográficas utilizando Django/Geodjango
Desenvolvimento de aplicações geográficas utilizando Django/GeodjangoDesenvolvimento de aplicações geográficas utilizando Django/Geodjango
Desenvolvimento de aplicações geográficas utilizando Django/Geodjango
 
KISD E-Rate Overview
KISD E-Rate OverviewKISD E-Rate Overview
KISD E-Rate Overview
 
zhng your vim
zhng your vimzhng your vim
zhng your vim
 
Django101 geodjango
Django101 geodjangoDjango101 geodjango
Django101 geodjango
 
Pythonic
PythonicPythonic
Pythonic
 

Similaire à Python story

Python 入门
Python 入门Python 入门
Python 入门kuco945
 
Javascript Training
Javascript TrainingJavascript Training
Javascript Trainingbeijing.josh
 
竞赛中C++语言拾遗
竞赛中C++语言拾遗竞赛中C++语言拾遗
竞赛中C++语言拾遗乐群 陈
 
如何学习Bash Shell
如何学习Bash Shell如何学习Bash Shell
如何学习Bash ShellLI Daobing
 
数据处理算法设计要点
数据处理算法设计要点数据处理算法设计要点
数据处理算法设计要点thinkinlamp
 
Ruby程式語言入門導覽
Ruby程式語言入門導覽Ruby程式語言入門導覽
Ruby程式語言入門導覽Mu-Fan Teng
 
Mongo快速入门
Mongo快速入门Mongo快速入门
Mongo快速入门Lucien Li
 
Python入门
Python入门Python入门
Python入门fengxing
 
patch和diff
patch和diffpatch和diff
patch和diffimacat .
 
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版逸 張
 
搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流bj
 
搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流jondynet
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档yiditushe
 
ajax_onlinemad
ajax_onlinemadajax_onlinemad
ajax_onlinemadKitor23
 
Mongodb
MongodbMongodb
Mongodbbj
 
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務台灣資料科學年會
 
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Chun-Min Chang
 
Practical Data Analysis in R
Practical Data Analysis in RPractical Data Analysis in R
Practical Data Analysis in RChun-Ming Chang
 

Similaire à Python story (20)

Op 20090411
Op 20090411Op 20090411
Op 20090411
 
Python 入门
Python 入门Python 入门
Python 入门
 
Javascript Training
Javascript TrainingJavascript Training
Javascript Training
 
竞赛中C++语言拾遗
竞赛中C++语言拾遗竞赛中C++语言拾遗
竞赛中C++语言拾遗
 
如何学习Bash Shell
如何学习Bash Shell如何学习Bash Shell
如何学习Bash Shell
 
数据处理算法设计要点
数据处理算法设计要点数据处理算法设计要点
数据处理算法设计要点
 
Ruby程式語言入門導覽
Ruby程式語言入門導覽Ruby程式語言入門導覽
Ruby程式語言入門導覽
 
Mongo快速入门
Mongo快速入门Mongo快速入门
Mongo快速入门
 
Python入门
Python入门Python入门
Python入门
 
patch和diff
patch和diffpatch和diff
patch和diff
 
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
 
搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流
 
搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流
 
Free Marker中文文档
Free Marker中文文档Free Marker中文文档
Free Marker中文文档
 
ajax_onlinemad
ajax_onlinemadajax_onlinemad
ajax_onlinemad
 
Mongodb
MongodbMongodb
Mongodb
 
第5章数组
第5章数组第5章数组
第5章数组
 
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務
 
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight
 
Practical Data Analysis in R
Practical Data Analysis in RPractical Data Analysis in R
Practical Data Analysis in R
 

Python story

  • 1. Python Story 陈小玉 <smallfish.xy@gmail.com> twitter: @nnfish blog: http://chenxiaoyu.org
  • 2. 历史由来 阿姆斯特丹 1989 年圣诞节期间 Guido van Rossum 为了打发圣诞节的无趣 决心开发一种新的解释性程序 … 不久之后,一个叫 Python 的语言就诞生了! 注: Guido 又称龟叔或者莽爹 :_)
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 10.
  • 12.
  • 13.
  • 14. 序列切片 >>> a = 'abcd' >>> print a[1:3] bc >>> print a[1:] bcd >>> print a[:] abcd >>> print a[:3] abc >>> print a[:-1] abc >>> print a[-2] c 字符串反转 >>> print a[::-1] dcba a b c d 0 1 2 3 -4 -3 -2 -1
  • 15.
  • 16.
  • 17.
  • 18. 流程控制 if a == 1: print 'aaa' else : print 'bbb' if b == 1: print '111' elif b == 2: print '222' else : print '000' while a < 10: print a a += 1 for item in (1, 2, 3): print item d = {'name': 'smallfish', 'age': 20} for k in d: print k, d[k] for k, v in d.items(): print k, v 输出 age 20 name smallfish
  • 19. 函数( 1 ) def hello(name): &quot;hello function, name is param&quot; print &quot;hello&quot;, name >>> print hello.__doc__ hello function, name is param >>> hello('smallfish') hello smallfish # 给函数参数加默认值 def hello(name='smallfish'): # 同上代码 >>> hello() hello smallfish >>> hello('chenxiaoyu') hello chenxiaoyu
  • 20. 函数( 2 ) # 不定参数 def hello(*args, **kwargs): print args print kwargs >>> hello() () {} >>> hello(1, 2, 3) (1, 2, 3) {} >>> hello(1, 2, 3, a='aa', b='bb') (1, 2, 3) {'a': 'aa', 'b': 'bb'} >>>
  • 21. 函数( 3 ) lambda 函数 简单函数: def lowercase(x): return x.lower() 其实可以这么写: lowercase = lambda x: x.lower()
  • 22. 内置函数 >>> help(re) Help on module re: NAME re - Support for regular expressions (RE). FILE d:ython27ibe.py DESCRIPTION … >>> dir(re) ['DEBUG', 'DOTALL', ..., 'sys', 'template'] >>> globals() {'a': 'abcd', '__builtins__': <module '__builtin__' (built-in)> … } locals() vars() 输出基本同上 >>> type(re) <type 'module'> >>> type('aa') <type 'str'>
  • 23. Class class User: def __init__(self, name): self.name = name def get_name(self): return self.name >>> u = User('smallfish') >>> print u.get_name() smallfish
  • 24. 模块 # user.py def hello(name): print 'hello', name class User: def __init__(self, name): self.name = name def get_name(self): return self.name >>> import user >>> dir (user) ['User', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'hello'] >>> user.hello('smallfish') hello smallfish >>> u = user.User('smallfish') >>> print u.get_name() smallfish
  • 25. 列表推导 L ist C omprehension (适用于 dict , tuple , str ) 过滤数组中除以 2 等于 0 的元素: tmp = [] items = [1, 2, 3, 4, 5] for i in items: if i % 2 == 0: tmp.append(i) # 其实可以这么做: >>> [item for item in items if item % 2 == 0] [2, 4] # 每个元素都乘以 2 >>> [item * 2 for item in items] [2, 4, 6, 8, 10]
  • 26. 修饰器( 1 ) Decorator , Python2.4 之后新加特性! 问题:想记录每个函数执行多少时间? def hello(): start = time.time() … run code print time.time() – start 是不是太丑了点?用修饰器吧。 先写一个包装函数: def time_wrapper(func): def _wrapper(*args, **kwargs): start = time.time() func(*args, **kwargs) print func.__name__, time.time() – start return _wrapper
  • 27. 修饰器( 2 ) 测试函数: def hello(n): sum = 0 for i in range(n): sum += I return sum 我们可以这样调用: a = time_wrapper(hello) print a(100) 这个不稀奇,还可以这样写: @time_wrapper def hello(n): … 同上 >>> hello(1000000) hello 0.265000104904
  • 28.
  • 29.
  • 30.
  • 31.
  • 32. 结束 print &quot; Thanks! &quot; import sys sys.exit(0)