Python进阶(二)——Python对象类型

近几年来,随着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数据类型——数字

  • 一般地数学操作和matlab中没有什么区别:

[cpp]  view plain copy
  1.  123+222  
  2. 345  
  3. >>> 2**100  
  4. 1267650600228229401496703205376L  
  5. >>> 3.1415*2  
  6. 6.283  
  7. >>> print 3.1415*2  
  8. 6.283  

  • 这里注意一下第二个命令2**100,结果显示的时候最后出来的L是由于类型强制转换为long(长整型)
  • 除了表达式,python还可以导入一些常用的数学模块,比如math和random:


[cpp]  view plain copy
  1. >>> import math  
  2. >>> math.pi  
  3. 3.141592653589793  
  4. >>> math.sqrt(85)  
  5. 9.219544457292887  
  6. >>>  
  7.  >>> import random  
  8. >>> random.random()#随机生成一个数字in[0,1]  
  9. 0.13332430829199282  
  10. >>> random.choice([1,2,3,4])#在列表1,2,3,4中随机选一个  
  11. 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中的
    标签:


  • 模式匹配,需要引入re模块:



  • 这里大家请看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数据类型——字典


  • 首先看一下字典的一般赋值方式:



  • 嵌套:



  • 键的排序:for循环



  • 迭代:

  • if测试:

在后面我们还会讲try语句,一个捕获并从异常中恢复的语句




7.Python数据类型——元组

元组的最大特点是不可变,换言之,元组是不可变的序列。



元组得不可变性约束决定了某些特定安全性要求下可以使用。






8.Python数据类型——文件

  • Python中的文件创建与编辑方式:



  • 此时桌面上创建了一个a.txt:




  • python默认文件打开方式为读'r',并可读取文件内容如下:



  • 当然,除了open函数,python还有高级的文件类工具:pipes、fifos、sockets、keyed-access files等。例如文件描述符(descriptor file)支持文件锁定和其他底层工具,而sockets提供网络和进程间接口。





9.用户自定义类

一个简单的用户自定义类,有相应的attribute和method:


  • 类中成员默认类型是public的(虽然python中我们还没有介绍成员变量的类型),“self”对象时我们把这叫做面向对象模型的原因,即一个函数总有一个隐含的对象,这和C++非常相似。




关于Python更多的学习资料将继续更新,敬请关注本博客和新浪微博Sophia_qing




你可能感兴趣的:(Python)