好文档 - 专业文书写作范文服务资料分享网站

Python项目开发实战 - 图文

天下 分享 时间: 加入收藏 我要投稿 点赞

第1章 Python核心知识回顾 Python带有两个非常有帮助的函数:dir(name)和help(name)。它们有助于你学习和探索这门语言。dir(name)会告诉你name所确定的对象有哪些可用的名称。而help(name)将会展示被称为name的对象的信息。当第一次导入一个新模块时,通常是不知道这个模块包含哪些函数或类。通过查看dir()得到的模块列表,可以知道有哪些方法和成员是可用的。然后可以在列出的任意特性上调用help()。一定要试试这些函数,它们是非常重要的信息来源。 注意:通常,也可以在你的文件管理器工具中双击文件,操作系统会调用python来自动运行程序。然而,这通常会导致:程序打开一个窗口,运行结束,然后在你看到结果前关闭窗口。所以你可能会倾向于在一个命令行提示中完整地输入python filename命令。 1.2 回顾Python数据类型 Python支持很多强大的数据类型。表面上看,这些数据类型和其他编程语言中对应的数据类型一样。但是在Python中,这些数据类型通常拥有强大的能力。任何东西在Python中都是对象,也因此拥有方法。这意味着可以对任何变量执行一系列的操作。内置的dir()和help()函数可以帮助你了解全部信息。在本节,你会看到标准数据类型以及它们最重要的操作。 需要注意Python的一些基础概念。首先,Python变量仅是名称。变量名的创建是通过把类型的实例赋值给它们。变量本身并没有类型,而与它们绑定在一起的对象拥有类型。名称只是个标签,同样,它也可以被一个完全不同的对象重新赋值。赋值操作使用=操作符,所以把一个值赋给一个变量就如下所示: aVariable = aValue 提示:如果需要,Python参考手册提供了全部细节(http://docs.python.org/3.3/reference/)。 这段代码把值aValue绑定到变量名aVariable上。如果此变量名不存在,解释器会把这个名称添加到合适的命名空间中。 因此,在Python中区别变量和它指向的对象是非常重要的。可以用双等号(==)来检查两个变量是否相等,也可以用is操作符来检查两个变量的对象身份(也就是两个名称是否 3 Python项目开发实战 指向同一个对象),如下所示: >>> aString = 'I love spam' >>> anotherString = 'I love spam' >>> anInt = 6 >>> intAlias = anInt >>> aString == anotherString # test equality of value True >>> aString is anotherString # test object identity False >>> anInt == intAlias # same value True >>> anInt is intAlias # also same object identity True Python根据你使用类型的方式对它们进行分类。比如,所有类型都可以分类为可变的(mutable)或不可变的(immutable)。如果一个类型是不可变的,它意味着这种类型的对象一旦创建后就不能再改变。可以创建一个新的数据项并把它赋值给同一个变量,但是不能更改原来不可变的值。 Python也支持多个容器类型,有时也被称作序列(严格来讲,容器是序列的子集,稍后会清晰阐述它们之间的差别)。尽管并不是所有的序列都支持所有的操作,但它们有一组共同的操作。 一些Python数据类型是可被调用的。这意味着可以像调用函数一样使用类型名来生成这种类型的一个新实例。如果没有给定初值,则会返回一个默认值。你将在下面每个数据类型的描述中看到相关的示例。 现在,你已经了解了操作Python数据类型的基础知识,下面会看到不同的数据类型,包括数值、布尔、None类型以及各种容器类型。 1.2.1 数值类型:整数和浮点数 Python支持多种数值类型,包括最基本的整数类型和浮点类型。 Python整数类型的特点在于它在理论上是无限大的。事实上,整数的大小只被你的计算机的内存限制。整数类型支持所有常用的数值操作,比如加法、减法、乘法等。可以使用传统的中缀表示法进行算术运算。比如,当相加两个整数时: >>> 5 + 4 9 或: >>> result = 12 + 8 >>> print (result) 20 4 第1章 Python核心知识回顾 整数的字面值会默认以十进制表示。可以通过在数值前面加0和进制的首字母作为前缀来使用其他进制。因此,二进制被表示为0bnnn,八进制被表示为0onnn,十六进制被表示为0xnnn。 一个整数的类型是int。对于浮点数和数字的字符串表示形式,如'123',可以用int从中创建整数。如下所示: >>> int(5.0) 5 >>> int('123') 123 int也可以通过设定第二个可选的参数进行非十进制到十进制的转换(不仅是二进制、八进制和十六进制,最高到三十六进制都可以)。如果想把一个十六进制数的字符串表示转换成一个十进制整数,可以使用: >>> intValue = int('AB34',16) 43828 Python浮点数的类型是float。与int一样,可以用float()来转换字符串表示,比如把'12.34'转换成浮点数。也可以用它把整数转换成一个浮点数。与整数不同的是,float()不能处理不同进制的字符串。 float类型也支持常用的算术操作以及几种舍入选项。Python的浮点数是基于美国电气与电子工程师协会(IEEE)标准并且拥有与底层计算机架构相同的取值范围。但与此同时,它们也存在着同样水平的精确度问题,这意味着进行浮点数的比较是非常冒险的。Python提供了模块来处理固定精度小数(decimal)和有理分数(fractions)。这可以帮助缓解精度带来的问题。Python也原生地支持复数(或虚数)数字类型,称为complex。这些类型都有特定的应用场景,所以本书不做详细介绍。 1.2.2 布尔类型 Python支持一种布尔类型bool。它拥有两种字面值True和False。bool类型的默认值是False。也就是说,调用bool()会产生False。 Python对其他类型也支持Truth和False的概念。例如,如果整数值是0,那么它会被认为是False,而其他所有的非0整数值都被认为是True。这点对浮点数一样适用。0.0被认为是False,而其他所有的浮点数被认为是True。 可以用int()把布尔数值转换成整数。False会被转换成0,而True会被转换成1。 布尔类型拥有大部分你所期待的布尔代数运算,包括and、or和not。但奇怪的是,Python并不支持xor运算。 5 Python项目开发实战 注意:布尔类型被实现为整数类型的子类。也就是说,布尔类型也支持一些你可能预料不到的操作,比如幂运算。可以输入像True**False的代码然后得到结果1。但是你应该只是假装这些特性不存在,并且把它们当作实现的细节。否则,你的代码会变得特别混乱。 除了布尔类型,Python也支持整数的按位布尔操作。也就是说,Python会把两个整数的每一个位对当成布尔数值对,并且对每一个位对执行相应的操作。这些操作包括按位与(& )、或( | )、非( ^ )和异或( ~ )。还包括把二进制位组左移(<<)或右移(>>)的位移操作符。在本章,你还会看到更多关于按位操作的介绍。 1.2.3 None类型 None类型代表一个空对象。在Python环境中,只有一个None对象。所有对None的引用都使用同一个实例。这意味着与None的对象值相等测试通常会被对象身份测试代替,如下所示: aVariable is None 而不是: aVariable == None None是Python函数的默认返回值。在函数中,它经常作为默认参数的位置标记或标志位。None是不可调用的,所以不能作为一个转换函数把其他类型转换为None。在被当作一个布尔数值时,None的值是False。 1.2.4 容器类型 如上所述,Python有几种用来表示不同容器或序列的类型。这些类型有字符串、字节、元组、列表、字典和集。你会在之后看到这些类型之间的相同点和不同点。标准库模块collections提供了其他一些特殊的容器类型。在接下来的叙述中,你偶尔会接触到它们。 6 注意:在接下来的讨论中,你会看到接受容器类型作为参数的操作。通常,这就包括Python中的可迭代变量。可迭代变量是指符合Python迭代协议的对象。简单说,可迭代变量就是可以在循环结构中使用的对象。大多数情况下,你不必担心它们。如果很有兴趣,可以在Python文档中详细了解。一个不错的学习起点是:https: //wiki.python.org/moin/Iterator。 第1章 Python核心知识回顾 一些特性是所有集合共有的。为了避免在每种容器类型的讨论中都赘述这些特性,在此会介绍它们。 可以通过内置函数len()得到Python中任何集合的长度。这个函数接受一个集合对象作为参数,返回集合中元素的个数。 可以通过索引下标访问一个集合中的单个元素。可以通过在方括号中提供一个下标值(或为字典提供有效的键值)实现这一点。集合的下标从0开始,也可以通过使用负的下标实现从后往前索引。这样,集合最后一个元素的下标就是-1。 虽然使用索引下标只能访问集合中的一个特定的元素,但可以用切片(slicing)来访问集合中的多个元素。切片操作包括一个开始下标、一个结束下标和一个步长。这三个数值通过冒号分隔。切片操作对于字典或集是无效的。步长参数可以帮助你实现比如每隔一个获取元素的操作。这几个参数都是可选的,默认值就是集合的开始下标、集合的最后一个元素下标和为1的步长。切片操作返回下标从start到end-1的所有(选择的)元素。 下面是在Python交互式提示中对字符串进行切片操作的示例: >>> '0123456789'[:] '0123456789' >>> '0123456789'[3:] '3456789' >>> '0123456789'[:3] '012' >>> '0123456789'[3:7] '3456' >>> '0123456789'[3:7:2] '35' >>> '0123456789'[::3] '0369' 可以使用sorted()函数对大多数集合进行排序。返回的结果是包含原集合元素的已排序列表。sorted()的可选参数使元素的排序和排序顺序变得更加灵活。 通常,在布尔表达式中,空集合被认为是False,反之是True。有两个函数——any()和all(),对集合的真假判断进行了完善。它们有助于对集合的布尔值进行更加精确的判断。any()函数接受一个集合作为参数,如果集合中的任何成员是True,就返回True。all()函数接受一个集合作为参数,当且仅当集合中所有成员都为True时才返回True。 1.2.5 字符串 Python字符串本质上是Unicode字符的集合(使用Unicode的影响会在第4章中讨论)。默认的编码方式是UTF8。如果你的工作语言环境是英语,大部分事情会如你所料的工作。一旦你开始使用非英语字符,事情就开始变得有趣了。目前,你将会在英语语言环境下工作,并一直使用UTF8。 在Python中,字符串的字面值需要被引号封闭。Python是非常灵活的。就这一点而言,Python可以使用单引号(‘Joe’)、双引号(“Joe”)、三重单引号(‘‘‘Joe’’’)和三重双引号(‘‘‘‘‘‘Joe”””) 7

Python项目开发实战 - 图文

第1章Python核心知识回顾Python带有两个非常有帮助的函数:dir(name)和help(name)。它们有助于你学习和探索这门语言。dir(name)会告诉你name所确定的对象有哪些可用的名称。而help(name)将会展示被称为name的对象的信息。当第一次导入一个新模块时,通常是不知道这个模块包含哪些函数或类。通过查看dir()得到的模块列表,可以知道有
推荐度:
点击下载文档文档为doc格式
3ewa54p63e9y6yn8bcwn
领取福利

微信扫码领取福利

微信扫码分享