Python ——谁说简洁就不能强大? Gingko Studio
概要 1. Python的历史 一、Python亲密接触 二、异域风情,Python的语法 2. Python的语言特点 无处不在的“引用” 强大的运算符 人性化的条件表达式 繁杂的逻辑操作符 别具一格的块分隔符 扩展的数组结构 友好的下标操作符 怪异的函数 独特的类 包的导入 Gingko Studio
概要 1. Python的历史 一、Python亲密接触 二、异域风情,Python的语法 2. Python的语言特点 无处不在的“引用” 强大的运算符 人性化的条件表达式 繁杂的逻辑操作符 别具一格的块分隔符 扩展的数组结构 友好的下标操作符 怪异的函数 独特的类 包的导入 Gingko Studio
Python的历史 Python是自由软件的丰硕成果之一 创始人 Guido van Rossum 时间地点 1989年圣诞节期间在阿姆斯特丹创造 名字来源 大蟒蛇飞行马戏团的爱好者 渊源 从ABC发展而来 主要受Modula-3的影响 结合了Unix shell和C的习惯 开发的原因只是为了打发圣诞节的无趣。 ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido认为是非开放造成的。因此Python与其它的语言如C,C++和Java结合的非常好。同时,他还实现了在ABC中闪现过但未曾实现的东西,因为他本人也是ABC的设计者之一 Modula-3(另一种相当优美且强大的语言,为小型团体所设计的) Gingko Studio
Python的语言特点 Python是一种面向对象的解释性语言 Python是免费的 Python是可移埴的 Python是可扩展的 参照网页《什么是Python》 CSDN Python被认为是一种解释性语言,但是与其他解释性语言不同的是它支持对操作系统的底层访问.因而,通常将划分在处于VB或PERL到系统级的C语言之间的位置. 此外,它还有编译的过程,让生成的字节码在Python虚拟机上跑.不过Python模块的字节码是可以保存的,在需要的时候不需要重新编译,而且产生的字节码完全独立于平台和操作系统! 因为免费,所以我们能做更多的事情,甚至可以下载其源代码 许多操作系统都支持Python,事实上Python最先是在MacOS创造的 因为Python是用C写的,其部分扩展是用C++写的,而其源代码又是可以获得的,所以Python与C/C++的结合非常好,甚至在移植的过程中都不必去重写Python代码(因为其跨语言支持)。此外还有用Java写的Python—JPython,它与Java的衔接也非常好。 Python语言的核心很小,语义和样式非常简单,只须半天就可搞定。但是若要达到高手级的地步则需要花费很多时间去学习其中的扩展和库,尤其是与其它语言如TK集成时更要认真思考。 几乎没有Python办不到事情。 它提供了基本的构建块以及大量的附加模块; 由于可以使用C/C++/Java对Python进行扩展,因此你可以用它来开发任何类型的程序 Python还提供了一些必要的挂钩、函数和扩展,使用我们还可以对操作系统的特定区域进行底层访问。 Gingko Studio
Python的语法特点 Python是一种语法表达极其优美的脚本语言 运行方式 命令行、交互式、图形集成环境 面向对象 甚至还支持异常处理 运行方式 命令行、交互式、图形集成环境 面向对象 甚至还支持异常处理 模块和包 与Java类似,还开发了JPython 语言扩展 可以用C/C++/Java编写新的语言模块 SWIG(简单封装和接口生成器 ) 参照网页《什么是Python》 China Linux 现在已经出现了许多用Python编写的可视化编程软件,用于实现象Delphi一样的功能。 这一点更象是Java。尤其是JPython,它完全支持Java,在这个环境下使用Python可以随意地使用Java的类库。 可以用C、C++或Java为Python编写新的新言模块。或者与Python直接编译在一起,或者采用动态库装入方式实现。还有一个专门为Python自动实现函数接口封装的工具,这就是SWIG(简单封装和接口生成器 ) Gingko Studio
一个Python的例子 Gingko Studio
为什么是Python Python有什么魅力值得我们去学习 它使程序员的生活更有趣 简单易学 功能丰富 如果你要编写代替自己工作的应用程序,C/C++/Java并不是最好的选择,因为它们太大太烦,而Python简洁而又能实现得很好。 c和java都有严格但罗索的语法,有永远学不完的函数、类、库。 perl有各种怪里怪气的速记符号,程序常常让人头晕。 python有丰富的数据类型,有完备的面向对象的结构,有规则表达式等各种方便编程的模块。 具有非常好的界面友好性。 Gingko Studio
为什么是Python 和其它语言的比较 Shell Script太旧了 Perl太古怪,根本没法看懂别人写的程序 PHP只适合做网页,离开网页它什么都不是 Tcl/Tk基本变量形式只有字符串,运算时还得变来变去 Java太伟大了,大到即使一个几个代码的小程序也会让你等死 这里再说一下Python与PHP和Per的比较 Python是设计出来的,而 PHP 和 Perl 是累积而来的 Python的作者是数学家,而 Perl 的作者则是个天才程式员 Python语法很整洁、编码很规范(这是强制的),可读性很好 Python一开始的架构就考虑得比较好,而PHP和Perl的很多功能都是后面再加上去的。 Python的缺点在于它OO不纯,效率不高,但是在CPU如此发达的今天效率还是主要问题吗? Gingko Studio
如何进入Python 以FC2为例 查看是否安装了Python的rmp包 $rpm –q python 进入Python的命令行模式 … <<< Gingko Studio
概要 一、Python亲密接触 二、异域风情,Python的语法 1. Python的历史 2. Python的语言特点 无处不在的“引用” 强大的运算符 人性化的条件表达式 繁杂的逻辑操作符 别具一格的块分隔符 扩展的数组结构 友好的下标操作符 怪异的函数 独特的类 包的导入 Gingko Studio
Python的语法 Python的语法是大家讨论的一个热点 优美? 简洁? 非常不灵活? 零乱? 有趣! Gingko Studio
无处不在的“引用” 在Java中基本数据类型(整型、字符等)都不是引用 Python中每个值(而不变量)都有一个唯一的标识 任何变量名之间的赋值都是引用的赋值 >>> x = 9 >>> y = x >>> z = x >>> y is x True >>> z is x True >>> x is 9 True Gingko Studio
强大的运算符 实现了更多的、更实际的运算符 乘幂 虚数的表示和复数间运算 字符串的乘法 >>> 3 ** 2 9 >>> a = 3 + 3j >>> b = complex(4, 4) >>> print a / b 0.75 + 0j >>> 2 * “Hello” ‘HelloHello’ Gingko Studio
人性化的条件表达式 C/C++/Java中能连续比较吗? 与数学方法上表示相近的连续比较 >>> x = 9 >>> 6 < x < 10 True Gingko Studio
繁杂的逻辑操作符 我不明白为什么Python要把逻辑操作变得如此繁杂 未进行符号化,用文字and,or,not表示 数字和字符串都能参与逻辑运算 and:只要左边表达式的值为真,就返回右边表达式的值 否则返回左边表达式的值 or :两边表达式都为真时,返回左边表达式的值 一真一假就返回真表达式的值 两者都为假时就返回右边表达式的值 Gingko Studio
繁杂的逻辑操作符 让我来看看这种“特色” >>> 9 and "OK" 'OK' >>> "OK" and 9 9 >>> "OK" and "ME" 'ME' >>> "" and 9 '' >>> "" and "OK" '' >>> 0 and "OK" 0 >>> “” or 0 >>> 0 or “” “” Gingko Studio
别具一格的块分隔符 让我们回想一下我们是如何写文章的 Python中语句块、函数体、类体的分隔都不是用花括号的 而是通过冒号和缩进来标识 >>> x = 9 >>> if ( 8 < x < 10 ): . . . print 8, “ < ”, “x”, “ < ”, 10 >>> def div (x, y): . . . if ( y == 0 ): . . . return . . . print x, “ - ”, y, “ = ”, x * y Gingko Studio
扩展的数组结构 Python中提供了比C/C++/Java中强大得多的类数组结构 列表可以认为就是常说的数组 >>> li = [ “a”, “b”, “c” ] 序列就是不可变列表,或者说常值数组 >>> t = ( “a”, “b”, “c” ) 字典的功能类似于Java中的Map >>> d = { “k1”: “v1”, “k2”: “v2” } 三种结构都具有相应的操作方法,也可以把它们看做一个类和类的操作 Gingko Studio
友好的下标操作符 还记得C/C++/Java中数组的下标操作符 [ ] 吗? 它不仅充当下标操作符,还实现了串的分割操作 >>> str = “Hello” >>> str [ -1 ] ‘o’ >>> str [ 0 : 2 ] ‘He’ >>> str [ : 4 ] ‘Hell’ >>> str [ 2 : ] ‘llo’ >>> str [ : ] ‘Hello’ 这里可以提一下的是在Python中下标是可以为负数,即从后向前数,最后一个字符的下标是-1 在接下来的陈伟的报告中你们将会看到更强的下数 个人认为存在负数的下标本身是搅乱人的思维,并不是一种可取的方法 Gingko Studio
怪异的函数 Python中函数的参数定义完全可以用怪异来形容 关键字:函数调用中指定列参的名字就可以不按顺传参 >>> def salary( base, rate ): . . . return base - base * rate . . . >>> salary ( rate = 0.1, base = 800 ) 720.0 此外,Python中对函数名本质上是当做一种变量来处理的,也就是说可以将函数名通过等号赋值给其它变量,那么同样可以通过被赋值的变量来调用函数体中的代码 Gingko Studio
独特的类 它的独特体现在类属性的设置和成员方法的参数上 类的属性是动态增加的 特殊的形参self Gingko Studio
独特的类 让我来看看下面这个例子 >>> class Time: . . . pass . . . def printTime( self ): . . . print self.hours, “:”, self.minutes, “:”, self.seconds . . . >>> now = Time() >>> now.hours = 20 >>> now.minutes = 30 >>> now.seconds = 10 >>> now.printTime() 20 : 30 : 10 关于这一块我准备说两点: 1。属性的动态增加。 存在的原因:Python中没有变量的声明,变量名第一次出现时就必须赋值,所以才把属性的增加做成动态的 会有什么后果:在调用相应函数前如果没有增加相应的属性就会报错。但是有可以通过函数查看对象的属性dir 2。为什么不用C/C++/Java中的this代替self? 不太清楚,也只能算是个人理解,没时间去找相应的资料 Gingko Studio
包的导入 使用和Java中相同的关键字import 存在两种不同的导入方式 >>> import math >>> from math import * 大家可以回顾一下UML中的access和import from形式会导入名空间,引用时就没用必要加模块(包)名了,这样会产生覆盖 Gingko Studio
其它 最后再介绍一下其它有类有关的的地方 存在操作符的重载 >>> def __add__(self, other): 存在异常处理 try…except 类的继承 class DerivedClassName(modname.BaseClassName): 1。Python的重载函数是通过“普通函数”来实现的 2。try…except 3。 Gingko Studio
总结 参考资料 http://python.cn/ http://www.python.org/ http://www.csdn.net/ 参考资料 http://python.cn/ http://www.python.org/ http://www.csdn.net/ 报告者 蒋松 Gingko Studio(银杏工作室) Gingko Studio
谢谢 *^_^* Gingko Studio