SlideShare uma empresa Scribd logo
1 de 27
人生苦短,请用Python


                                                         Cong De Peng@NCS



 Copyright©1996-2007 NCS Pte Ltd. All Rights Reserved.
2
历史
发行时间    1991年     (Java 1995年)

设计者     吉多·范罗苏姆(Guido van Rossum)




       《蒙提·派森的飞行马戏团》
       (Monty Python's Flying Circus)

       因为Python的作者特别喜欢《蒙提·派森飞
       行马戏团》而以此命名
概念
编译型/解释型
静态类型/ 动态类型
强类型/ 弱类型


2012/4/12     4
编译型/解释型
求同
 CPU只能执行有限的特定的二进制的指令
  集
 任何代码最终都需要编译成CPU的指令集




2012/4/12               5
编译型 存异
   编译型语言是源代码首先编译成二进制指
    令集和二进制数据(机器码),然后存放
    于硬盘上,在运行时,由操作系统在硬盘
    上加载可执行程序到内存,然后执行程序




2012/4/12                6
解释型 存异
   解释性编程语言,是指源代码直接以人可
    读的格式保存在硬盘上,而不是以CPU指
    令集(机器码)格式保存在硬盘上,当要
    执行这类语言编写的程序时,解释器从硬
    盘加载源代码文件,然后在内存里面动态
    的编译改源代码,然后得到编译后的CPU
    指令集, 然后运行。


2012/4/12                 7
编译型/解释型
各自的优缺点?
   前者执行速度快,同等条件下对系统要求
    较低,但是平台兼容性比较差

   后者平台兼容性好,开发效率高




2012/4/12                8
编译型/解释型
互补
   预编译解释型语言
      1. 在执行乊前进行一次预编译,编译成平台无
         关字节码(介于源代码和机器码乊间)
      2. 有虚拟机解释执行


      Java,C#,Python都是预编译解释型语
       言

2012/4/12                        9
静态类型
   数据类型是在编译期间检查的,也就是说
    在写程序时要声明所有变量的数据类型,
    而且程序结构在运行期间不可改变。

   C/C++ C#、JAVA是静态类型语言的典型代
    表


2012/4/12                  10
动态类型
   在运行期间才去做数据类型检查的语言,
    同时可以运行期间修改程序结构
 也就是说,在用动态类型的语言编程时,
  永远也不用给任何变量指定数据类型,该
  语言会在你第一次赋值给变量时,在内部
  将数据类型记录下来,同时你可以在运行
  期间动态的修改自身程序结构
 Python就是典型的动态类型语言

                         11
心法口诀

Static typing when possible,
dynamic typing when needed.




 2012/4/12                12
强类型 = 强制定义数据类型
   一旦一个变量被强制指定了某个数据类型,如果
    不经过强制转换,那么它就永远是这个数据类型
    了。

   举个例子:如果你定义了一个整型变量a,那么程
    序根本不可能将a当作字符串类型处理。强类型
    定义语言是类型安全的语言。

    2012/4/12           13
弱类型 = 数据类型可以被忽略
   与强类型定义语言相反, 一个变量不需要类
    型转换就可以赋不同数据类型的值

   Javascript就是这货,你可以 1+“2” = “12”




2012/4/12                             14
C/C++
Java,C#
                 编译型   静态类型   强类型
JavaScript   是                      语言
                 解释型   动态类型   弱类型
Python
C/C++     JAVA/C#   JavaScript   Python

编译型      Yes       Yes                    Yes

解释型                Yes       Yes          Yes

静态类型     Yes       Yes

动态类型                         Yes          Yes

强类型      Yes*      Yes                    Yes

弱类型      (指针部分弱)             Yes



C/C++      是静态类型语言,是强类型定义语言*(类型安全的语言) ;编译型
JAVA/C# 是静态类型语言,是强类型定义语言(类型安全的语言) ;编译字节码解释型
JavaScript 是动态类型语言,是弱类型定义语言(类型不安全的语言);解释型
Python    是动态类型语言,是强类型定义语言(类型安全的语言) ;编译字节码解释型
C/C++    JAVA/C#   JavaScript   Python

静态类型   Yes      Yes

动态类型                      Yes          Yes

强类型    Yes*     Yes                    Yes

弱类型    (指针部分)             Yes




 如果你只学过 C/C++ 和Java/C#,那你的职业生涯是不完整的。
 就算你再懂一点JavaScript,也属于弱类型。
 只有加上Python才是动态强类型的程序员。
Python的经典处理 联合强类型弱类型的优点
 a=1
 a +”str” // ?
 a=“str” //?


 变量 = 类型 + 值
 因为a是变量的引用,python里面变量的类型
  和值绑定在一起,而不是和引用绑定
    2012/4/12                 18
图灵等价

每个编程语言都是图灵等价的,
 有必要学习一门新的编程语言吗?


 C可以做的任务,Java也可以做到。
 Java可以做的任务, Python也可以做到。
Python就是那个你应该学习的语言之一


每一年都应该学习一门新
 语言。

不能改变你的思维习惯的
 编程语言是不值得学习的。
1+1

 Python
  –1,2,3,4,5,6,7,8,9,0
  –1+1

 Java
   –One,Two,Three,Four,Five

 –Number one = new Number(1);
 –one.add(one);
Java v.s Python

 从列表[1,3,44,7,8,9,0,23,4,6,8]中取出大于3的偶数。

 Python
  – list_a = [1,3,44,7,8,9,0,23,4,6,8]
  – list_b = [i for i in list_a if i>3 and i%2==0 ]
  – print list_b

 Java
The Zen of Python (1)

1.   Beautiful is better than ugly.
2.   Explicit is better than implicit.
3.   Simple is better than complex.
4.   Complex is better than complicated.
5.   Flat is better than nested.
6.   Sparse is better than dense.
7.   Readability counts.
8.   Special cases aren't special enough to break the rules.
9.   ….




http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html
The Zen of Python (2)

优美胜于丑陋
明了胜于晦涩
简洁胜于复杂
复杂胜于凌乱
扁平胜于嵌套
间隔胜于紧凑
可读性很重要
 即便假借特例的实用性之名,也不可违背这些规则
Python缩进语法

 以缩进来区分代码块
 每一行一个语句
 不需要分号结尾
 复合语句块以冒号拆行

 结果:
 –丑陋的代码根本通不过编译
 –可读性非常好
 –每个人写出来的代码格式都是一致的
Python的编程范式

多泛型、
面向对象、
函数式编程、
面向切面编程

 Java正在努力加入函数式编程的部分功能,也许2025年你
  就可以用Java的函数式编程,OMG~~
The End   or The start




      学习资料和软件:192.168.81.131

Mais conteúdo relacionado

Destaque

「開放式領導」第一章 掌控還管用嗎?
「開放式領導」第一章 掌控還管用嗎?「開放式領導」第一章 掌控還管用嗎?
「開放式領導」第一章 掌控還管用嗎?
Douny Yang
 
Rediscover Pompei - numbered edition Pen
Rediscover Pompei - numbered edition PenRediscover Pompei - numbered edition Pen
Rediscover Pompei - numbered edition Pen
samatrone
 
The Factory InfoStore:Using SoA to Easily Create Factory Applications
The Factory InfoStore:Using SoA to Easily Create Factory ApplicationsThe Factory InfoStore:Using SoA to Easily Create Factory Applications
The Factory InfoStore:Using SoA to Easily Create Factory Applications
FAST-Lab. Factory Automation Systems and Technologies Laboratory, Tampere University of Technology
 
Filming photographs
Filming photographsFilming photographs
Filming photographs
rturner93
 
аравтын бут 3
аравтын бут 3аравтын бут 3
аравтын бут 3
Otgontsetseg_B
 
Grammar book#2
Grammar book#2Grammar book#2
Grammar book#2
Sadiaa24
 

Destaque (20)

production log continued
production log continued production log continued
production log continued
 
Charles dickens angie
Charles dickens angieCharles dickens angie
Charles dickens angie
 
Bordeaux farm market
Bordeaux farm marketBordeaux farm market
Bordeaux farm market
 
Como licenciar un blog
Como licenciar un blogComo licenciar un blog
Como licenciar un blog
 
theQuiz(7);
theQuiz(7);theQuiz(7);
theQuiz(7);
 
Коммуникации органов власти Алтайского края с населением (монография)
Коммуникации органов власти Алтайского края с населением (монография)Коммуникации органов власти Алтайского края с населением (монография)
Коммуникации органов власти Алтайского края с населением (монография)
 
「開放式領導」第一章 掌控還管用嗎?
「開放式領導」第一章 掌控還管用嗎?「開放式領導」第一章 掌控還管用嗎?
「開放式領導」第一章 掌控還管用嗎?
 
Ветрова А., ЛаринаА., Гонцова В. Проект для "КонсультантПлюс Илан"
Ветрова А., ЛаринаА., Гонцова В. Проект для "КонсультантПлюс Илан"Ветрова А., ЛаринаА., Гонцова В. Проект для "КонсультантПлюс Илан"
Ветрова А., ЛаринаА., Гонцова В. Проект для "КонсультантПлюс Илан"
 
Contents+background information 6pages
Contents+background information 6pagesContents+background information 6pages
Contents+background information 6pages
 
Rahsia surah al kauthar
Rahsia surah al kautharRahsia surah al kauthar
Rahsia surah al kauthar
 
Rediscover Pompei - numbered edition Pen
Rediscover Pompei - numbered edition PenRediscover Pompei - numbered edition Pen
Rediscover Pompei - numbered edition Pen
 
BCG Matrix
BCG MatrixBCG Matrix
BCG Matrix
 
The Factory InfoStore:Using SoA to Easily Create Factory Applications
The Factory InfoStore:Using SoA to Easily Create Factory ApplicationsThe Factory InfoStore:Using SoA to Easily Create Factory Applications
The Factory InfoStore:Using SoA to Easily Create Factory Applications
 
Filming photographs
Filming photographsFilming photographs
Filming photographs
 
аравтын бут 3
аравтын бут 3аравтын бут 3
аравтын бут 3
 
Chapter3 36pages
Chapter3 36pagesChapter3 36pages
Chapter3 36pages
 
Uta fisei
Uta   fiseiUta   fisei
Uta fisei
 
Texturas y Matices
Texturas y MaticesTexturas y Matices
Texturas y Matices
 
Fresh
FreshFresh
Fresh
 
Grammar book#2
Grammar book#2Grammar book#2
Grammar book#2
 

Semelhante a 为什么要学Python

3. java basics
3. java basics3. java basics
3. java basics
netdbncku
 
2006 recycle opensourceprojects
2006 recycle opensourceprojects2006 recycle opensourceprojects
2006 recycle opensourceprojects
George Ang
 
Recycle Open Source Projects
Recycle Open Source ProjectsRecycle Open Source Projects
Recycle Open Source Projects
George Ang
 
简单Pthon教程
简单Pthon教程简单Pthon教程
简单Pthon教程
junjun chen
 

Semelhante a 为什么要学Python (20)

Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
 
Jni文档
Jni文档Jni文档
Jni文档
 
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
 
beidakejian
beidakejianbeidakejian
beidakejian
 
3. java basics
3. java basics3. java basics
3. java basics
 
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
 
Compiler for Dummy 一點都不深入的了解 Compiler, Interpreter 和 VM
Compiler for Dummy 一點都不深入的了解 Compiler, Interpreter 和 VMCompiler for Dummy 一點都不深入的了解 Compiler, Interpreter 和 VM
Compiler for Dummy 一點都不深入的了解 Compiler, Interpreter 和 VM
 
Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发
 
Google protocol buffers简析
Google protocol buffers简析Google protocol buffers简析
Google protocol buffers简析
 
2006 recycle opensourceprojects
2006 recycle opensourceprojects2006 recycle opensourceprojects
2006 recycle opensourceprojects
 
Recycle Open Source Projects
Recycle Open Source ProjectsRecycle Open Source Projects
Recycle Open Source Projects
 
为啥别读HotSpot VM的源码(2012-03-03)
为啥别读HotSpot VM的源码(2012-03-03)为啥别读HotSpot VM的源码(2012-03-03)
为啥别读HotSpot VM的源码(2012-03-03)
 
getPDF.aspx
getPDF.aspxgetPDF.aspx
getPDF.aspx
 
getPDF.aspx
getPDF.aspxgetPDF.aspx
getPDF.aspx
 
105-2 iOS程式設計(二)
105-2 iOS程式設計(二) 105-2 iOS程式設計(二)
105-2 iOS程式設計(二)
 
Go
GoGo
Go
 
Go语言: 互联网时代的C
Go语言: 互联网时代的CGo语言: 互联网时代的C
Go语言: 互联网时代的C
 
函数式编程
函数式编程函数式编程
函数式编程
 
第1章 入门
第1章 入门第1章 入门
第1章 入门
 
简单Pthon教程
简单Pthon教程简单Pthon教程
简单Pthon教程
 

为什么要学Python

  • 1. 人生苦短,请用Python Cong De Peng@NCS Copyright©1996-2007 NCS Pte Ltd. All Rights Reserved.
  • 2. 2
  • 3. 历史 发行时间 1991年 (Java 1995年) 设计者 吉多·范罗苏姆(Guido van Rossum) 《蒙提·派森的飞行马戏团》 (Monty Python's Flying Circus) 因为Python的作者特别喜欢《蒙提·派森飞 行马戏团》而以此命名
  • 5. 编译型/解释型 求同  CPU只能执行有限的特定的二进制的指令 集  任何代码最终都需要编译成CPU的指令集 2012/4/12 5
  • 6. 编译型 存异  编译型语言是源代码首先编译成二进制指 令集和二进制数据(机器码),然后存放 于硬盘上,在运行时,由操作系统在硬盘 上加载可执行程序到内存,然后执行程序 2012/4/12 6
  • 7. 解释型 存异  解释性编程语言,是指源代码直接以人可 读的格式保存在硬盘上,而不是以CPU指 令集(机器码)格式保存在硬盘上,当要 执行这类语言编写的程序时,解释器从硬 盘加载源代码文件,然后在内存里面动态 的编译改源代码,然后得到编译后的CPU 指令集, 然后运行。 2012/4/12 7
  • 8. 编译型/解释型 各自的优缺点?  前者执行速度快,同等条件下对系统要求 较低,但是平台兼容性比较差  后者平台兼容性好,开发效率高 2012/4/12 8
  • 9. 编译型/解释型 互补  预编译解释型语言 1. 在执行乊前进行一次预编译,编译成平台无 关字节码(介于源代码和机器码乊间) 2. 有虚拟机解释执行  Java,C#,Python都是预编译解释型语 言 2012/4/12 9
  • 10. 静态类型  数据类型是在编译期间检查的,也就是说 在写程序时要声明所有变量的数据类型, 而且程序结构在运行期间不可改变。  C/C++ C#、JAVA是静态类型语言的典型代 表 2012/4/12 10
  • 11. 动态类型  在运行期间才去做数据类型检查的语言, 同时可以运行期间修改程序结构  也就是说,在用动态类型的语言编程时, 永远也不用给任何变量指定数据类型,该 语言会在你第一次赋值给变量时,在内部 将数据类型记录下来,同时你可以在运行 期间动态的修改自身程序结构  Python就是典型的动态类型语言 11
  • 12. 心法口诀 Static typing when possible, dynamic typing when needed. 2012/4/12 12
  • 13. 强类型 = 强制定义数据类型  一旦一个变量被强制指定了某个数据类型,如果 不经过强制转换,那么它就永远是这个数据类型 了。  举个例子:如果你定义了一个整型变量a,那么程 序根本不可能将a当作字符串类型处理。强类型 定义语言是类型安全的语言。 2012/4/12 13
  • 14. 弱类型 = 数据类型可以被忽略  与强类型定义语言相反, 一个变量不需要类 型转换就可以赋不同数据类型的值  Javascript就是这货,你可以 1+“2” = “12” 2012/4/12 14
  • 15. C/C++ Java,C# 编译型 静态类型 强类型 JavaScript 是 语言 解释型 动态类型 弱类型 Python
  • 16. C/C++ JAVA/C# JavaScript Python 编译型 Yes Yes Yes 解释型 Yes Yes Yes 静态类型 Yes Yes 动态类型 Yes Yes 强类型 Yes* Yes Yes 弱类型 (指针部分弱) Yes C/C++ 是静态类型语言,是强类型定义语言*(类型安全的语言) ;编译型 JAVA/C# 是静态类型语言,是强类型定义语言(类型安全的语言) ;编译字节码解释型 JavaScript 是动态类型语言,是弱类型定义语言(类型不安全的语言);解释型 Python 是动态类型语言,是强类型定义语言(类型安全的语言) ;编译字节码解释型
  • 17. C/C++ JAVA/C# JavaScript Python 静态类型 Yes Yes 动态类型 Yes Yes 强类型 Yes* Yes Yes 弱类型 (指针部分) Yes  如果你只学过 C/C++ 和Java/C#,那你的职业生涯是不完整的。  就算你再懂一点JavaScript,也属于弱类型。  只有加上Python才是动态强类型的程序员。
  • 18. Python的经典处理 联合强类型弱类型的优点  a=1  a +”str” // ?  a=“str” //?  变量 = 类型 + 值  因为a是变量的引用,python里面变量的类型 和值绑定在一起,而不是和引用绑定 2012/4/12 18
  • 21. 1+1  Python –1,2,3,4,5,6,7,8,9,0 –1+1  Java –One,Two,Three,Four,Five –Number one = new Number(1); –one.add(one);
  • 22. Java v.s Python  从列表[1,3,44,7,8,9,0,23,4,6,8]中取出大于3的偶数。  Python – list_a = [1,3,44,7,8,9,0,23,4,6,8] – list_b = [i for i in list_a if i>3 and i%2==0 ] – print list_b  Java
  • 23. The Zen of Python (1) 1. Beautiful is better than ugly. 2. Explicit is better than implicit. 3. Simple is better than complex. 4. Complex is better than complicated. 5. Flat is better than nested. 6. Sparse is better than dense. 7. Readability counts. 8. Special cases aren't special enough to break the rules. 9. …. http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html
  • 24. The Zen of Python (2) 优美胜于丑陋 明了胜于晦涩 简洁胜于复杂 复杂胜于凌乱 扁平胜于嵌套 间隔胜于紧凑 可读性很重要  即便假借特例的实用性之名,也不可违背这些规则
  • 25. Python缩进语法  以缩进来区分代码块  每一行一个语句  不需要分号结尾  复合语句块以冒号拆行  结果: –丑陋的代码根本通不过编译 –可读性非常好 –每个人写出来的代码格式都是一致的
  • 27. The End or The start 学习资料和软件:192.168.81.131