第四章 介绍Python对象类型(1)

Python知识结构

Python程序可以分解成模块、语句、表达式及对象:

  1. 程序由模块组成
  2. 模块包含语句
  3. 语句包含表达式
  4. 表达式创建并处理对象

为什么要使用内置类型

  • 强大的内置对象使程序更容易编写
  • 内置对象可扩展
  • 内置对象往往比定制的数据结构更有效率
  • 内置对象是语言标准的一部分

Python核心数据类型

数字

python3.x的整数类型在需要的时候会自动提供额外的精度,以用于较大的数值

存在两种打印python对象的方式:全精度repr和用户友好形式str;2.7和3.x以后默认均为str

python包括常用数学工具math模块、random模块

还包括一些较为少见的数字对象(如复数、有理数、集合、布尔等)

字符串

用来记录文本信息和任意的字节集合,是python中提到的第一个作为序列的例子,严格来说字符串是由单字符的字符串所组成的序列。

序列——一个包含其他对象的有序集合;序列中的元素包含了一个从左到右的顺序。

序列操作

python中的变量不需要提前声明;当给一个变量赋值的时候就创建了它,可能赋的是任何类型的对象,并且当变量出现在一个表达式中的时候,就会用其值替换他。在使用变量的值之前必须对其赋值。

加号对于不同的对象有不同的意义,用于数字表示加法,用于字符串表示拼接——python多态的一种表现,一个操作的意义取决于被操作的对象

不可变性

字符串的不可变性——在创建后不能原位置改变;每个操作都被定义为生成新的字符串作为其结果

不能通过对其某一位置赋值而改变字符串,但是总可以简历一个新的字符串并以同一个变量名对其进行赋值;因为python在运行过程中会清理旧的对象

  • 不可变——数字、字符串、元组
  • 可变——列表、字典、集合

但是严格来说,可以在原位置改变基于文本的数据;需要扩展为一个独立字符构成的列表,然后不加入其他字符把他重新拼接起来;或者使用bytearray类型

特定类型的方法

前述方法在列表和元组中也可以用,接下来讲述只适用于字符串类型的方法。

  • find(),子串查找
  • replace(),全局搜索和替换
  • split(),通过分隔符将字符串拆分为子串(一种简单的推导)
  • upper(),大小写变换
  • isalpha(),测试内容是否字母
  • isdigit(),测试内容是否字母
  • rstrip(),去除右侧空格字符 #lstrip(),strip()

s.rstrip().split(',')——在调用split方法前调用了rstrip方法,前一个方法调用结束会为后一个方法调用产生一个临时对象

格式化操作

  • '%s' % ('1234') #all
  • '{0},{1}'.format('you','me') #2.6+,3.0+
  • '{},{}'.format('you','me') #2.7+,3.1+
  • '{:,.2f}'.format(1234.5678) #输出1234.57
  • '%.2f | %+05d' % (3.12159, -42)#输出3.14 | -0042

一条简明法则:通用操作以内置函数或表达式形式出现(len(x)、x[0]),特定操作以方法调用形式出现

寻求帮助

  • 调用内置的dir函数;会返回一个包含了对象所有属性的列表

变量名中有双下划线的内容,代表了字符串对象的实现方式并支持定制(重载)

一般来说,有双下划线的变量名表示python实现细节的命名模式;没有双下划线的属性是字符串对象能调用的方法

  • 查询方法是做什么的,可以传递给help函数

dir和help都可以作用于一个真实对象,或是一种数据类型;help命令相对比dir命令而言,在返回相同的函数列表的同时,还提供了完整的类型细节,并允许你使用类名查询一个具体的方法

字符串编程的其他方式

  • 反斜杠转义序列表示特殊的字符,在python中表示为\xNN的十六进制,除非是可打印的字符

  • python允许字符串中包含单引号或者双引号,采用不同的引号可以让另外一种引号被包含在其中
  • python也允许三个引号中包含多行字符串字面量
  • python也支持原始(raw)字符串字面量,即去掉反斜杠转义机制,这样的字符串字面量以字母“r”开头

unicode字符串

原书这个章节翻译比较差劲,可以直接参考http://www.ay1.cc/article/1682516261653341963.html; 或者第7章--字符串基础

unicode的支持是python不同版本间最大的差异之一

  • 在python3.x中,基本的str字符串类型也能处理unicode(ascii是一种简单的unicode),并且用一种独特的bytes字符串类型表示原始字节值 (‘sp\xc4m’输出为'spÄm')
  • 在python2.x中,unicode常量形式来支持 (u‘sp\u00c4m’输出为'spÄm')
  • str通常既能处理8位的基于字符的字符串(包括ascii文本),也能处理原始字节值
  • 一个独特的unicode字符串类型用于表示unicode文本

非unicode字符串在可能的情况下,是由ascii码打印的8位字节序列;而unicode字符串是unicode码序列。

bytearray字符串类型是一种bytes字符串

文本字符串包括3.x中的普通字符串和2.x中的unicode字符串;而字节字符串包括3.x中的字节串和2.x中的普通字符串

python2.x允许在一个表达式中混合使用其普通字符串和unicode字符串,只要普通字符串都由ascii字符组成;python3.x拥有一个更严格的模型,禁止在没有显示转换的情况下,将普通字符串和字节字符串混用

模式匹配

名为re的模块,不是字符串对象自己的方法,包含了搜索、分割、替换等调用

Python学习手册 文章被收录于专栏

《Python学习手册(第五版)》学习随记

全部评论

相关推荐

02-15 15:29
青岛大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务