近几年来,随着Google、YouTube、IRobot等大公司对Python语言的广泛使用,Python公司的身影经常出现与我们的视线,Python语言也在软件质量、开发效率、程序的可移植性、标准库的支持等方面成为了一个优秀的程序开发语言,可以完成网站、游戏开发到航空航天控制等领域的各种任务。本栏目希望通过学习《Python学习手册》和网站上的相关指导,从零学习Python,希望对大家有一些帮助。
本栏目开发环境:Windows 7 + Python 2.7.2 + VS2008(以后集成)
Python进阶(二)——Python对象类型
上一章中我们主要讲了Python的安装与Python基本命令行,IDLE的应用。本章中我们将讲述Python的对象类型,包括数字、字符串、列表、字典、元组、文件以及用户自定义类对象。
1.总览——Python程序可以分解为模块、语句、表达式和对象
- 程序有模块构成(模块的概念上一章中提过)
- 模块包含语句
- 语句包含表达式
- 表达式建立并处理对象
2.Python核心数据类型
表2.1 Python内置对象类型
以上是Python内置对象基本类型,当然不完全。比如我们在编写网络脚本时,可以使用套接字对象,其他类型的对象往往通过导入或使用模块建立。
我们将表2.1中所列类型为Python核心类型。
有一点需要注意:
python中没有类型声明(这点有点儿像matlab),运行的表达式决定了建立对象的类型
在表2.1中有两个特殊的类型,一个是列表[],一个是字典{},列表提供了其他对象的有序集合,而字典是通过键值存储对象的(类似STL::map),列表和字典都可以实现嵌套,后面会讲。
3.Python数据类型——数字
- 123+222
- 345
- >>> 2**100
- 1267650600228229401496703205376L
- >>> 3.1415*2
- 6.283
- >>> print 3.1415*2
- 6.283
- 这里注意一下第二个命令2**100,结果显示的时候最后出来的L是由于类型强制转换为long(长整型)
- 除了表达式,python还可以导入一些常用的数学模块,比如math和random:
- >>> import math
- >>> math.pi
- 3.141592653589793
- >>> math.sqrt(85)
- 9.219544457292887
- >>>
- >>> import random
- >>> random.random()#随机生成一个数字in[0,1]
- 0.13332430829199282
- >>> random.choice([1,2,3,4])#在列表1,2,3,4中随机选一个
- 2
- 这里呢,提醒一下大家,在Python IDLE和 Python Shell中敲math.xxx是出不来提示的,而pythonwin中会有提示,类似C++封装好的类:
- 除此之外,Python还包含负数、固定精度十进制数、集合等数据、、数字类型,还有第三方开源扩展领域包含矩阵和向量等类型,感兴趣的朋友可以查查看。
4.Python数据类型——字符串
- python中,字符串是一个单个字符的串序列,其他序列类型还有列表和元组。
- 以下是python中对字符创的常见操作:
- Python的字符串操作有个特点,你不能通过对某一位进行赋值而改变字符串,但可以通过建立一个新字符串并以同一个变量名对其赋值。因为Python会自动清理旧的对象,如下图所示:
- 除此之外还有一些类型特定的方法,如replace, find方法
- 这里,因为字符串具有不可变性,因此replace操作并不会改变该字符串,而是创建一个新的字符串作为结果。
- 这里要提醒下,尽管序列操作是通用的,但方法不通用(字符串方法只能用于字符串操作)。
- 对于字符串的其他方法呢,我们可以用上一章中讲过的dir()函数和help( )函数:
- dir函数给出了所有方法的名称:
- help函数给出了每个函数的具体definition:
- 小技巧:python字符串有一个语法,在一对 三个单引号(or双引号)之间的内容保持其格式。好熟悉的方法?是的!类似HTML中的
标签:
- 这里大家请看match函数,其第一部分定义了模式,后一部分是要匹配的文本content。
- 比如这个模式match = re.match('Hello[\t]*(.*)world','HelloPython world'),就是以Hello开头,连上n个'\t',再接着任意字符并将其保存至匹配的group中,最后以‘world’结尾的模式在'Hello Python world'中匹配的结果。
5.Python数据类型——列表
- python列表是一个与任意类型的对象位置相关的有序集合。列表最大的特点就是,没有固定类型的约束:
- 特定类型的操作:与string不同,list是可变的(相对于字符串的不可变性而言),但是有的方法是有针对性类型的,比如append函数只接受字符串:
6.Python数据类型——字典
在后面我们还会讲try语句,一个捕获并从异常中恢复的语句
7.Python数据类型——元组
元组的最大特点是不可变,换言之,元组是不可变的序列。
元组得不可变性约束决定了某些特定安全性要求下可以使用。
8.Python数据类型——文件
- python默认文件打开方式为读'r',并可读取文件内容如下:
- 当然,除了open函数,python还有高级的文件类工具:pipes、fifos、sockets、keyed-access files等。例如文件描述符(descriptor file)支持文件锁定和其他底层工具,而sockets提供网络和进程间接口。
9.用户自定义类
一个简单的用户自定义类,有相应的attribute和method:
- 类中成员默认类型是public的(虽然python中我们还没有介绍成员变量的类型),“self”对象时我们把这叫做面向对象模型的原因,即一个函数总有一个隐含的对象,这和C++非常相似。
关于Python更多的学习资料将继续更新,敬请关注本博客和新浪微博Sophia_qing。