《Python 3程序开发指南(第2版•修订版)》——2.2 Integral类型

本节书摘来自异步社区《Python 3程序开发指南(第2版•修订版)》一书中的第2章,第2.2节,作者[英]Mark Summerfield,王弘博,孙传庆 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 Integral类型

Python提供了两种内置的Integral类型,即int与bool1。整数与布尔型值都是固定的,但由于Python提供了增强的赋值操作符,使得这一约束极少导致实际问题。在布尔表达式中,0与False表示False,其他任意整数与true都表示true。在数字表达式中,True表示1,False表示0。这意味着,有些看起来很怪异的表达式也是有效的。例如,我们可以使用表达式i += True来对整型变量i进行递增操作,当然,最自然的方法还是i+=1。

2.2.1 整数

整数的大小只受限于机器的内存大小,因此,包含几百个数字的整数可以很容易地创建与操纵——尽管在速度上会比处理那些可以由处理器自然表示的整数要慢。

默认情况下,整数literals采用的是十进制,但在方便的时候也可以使用其他进制:

>>> 14600926                       # decimal
14600926
>>> 0b110111101100101011011110     # binary
14600926
>>> 0o67545336                     # octal
14600926
>>> 0xDECADE                       # hexadecimal
14600926

二进制数以0b引导,八进制数以0o引导2,十六进制数则以0x引导,大写字母也可以使用。

所有常见的数学函数与操作符都可用于整数,如表2-2所示。有些功能由内置函数提供,比如abs()函数,abs(i)可以返回整数i的绝对值;有些功能由int操作符提供,比如,i+j返回整数i与整数j的和。


screenshot


screenshot

所有二元数学操作符(+、-、/、//、%与)都有相应的增强版赋值操作符(+=、-=、/=、//=、%=与=),这里,x op= y在运算逻辑上与x = x op y是等价的(这里的等价是指通常的情况,即读取x的值没有副作用。)

对象的创建可以通过给变量赋字面意义上的值,比如x=17,或者将相关的数据类型作为函数进行调用,比如x=int(17)。有些对象(比如,类型为decimal.Decimal)只能通过数据类型创建,这是因为这些对象不能用字面意义表示。使用数据类型创建对象时,有3种用例。

第一种情况是,不使用参数调用数据类型函数,这种情况下,对象会被赋值为一个默认值,比如,x=int()会创建一个值为0的整数。所有内置的数据类型都可以作为函数并不带任何参数进行调用。

第二种情况是,使用一个参数调用数据类型函数。如果给定的参数是同样的数据类型,就将创建一个新对象,新对象是原始对象的一个浅拷贝。(浅拷贝在第3章介绍。)如果给定的参数不是同样的数据类型,就会尝试进行转换。表2-3展示了int类型时的这种用法。如果给定参数支持到给定数据类型的转换,但是转换失败,就会产生一个ValueError异常,否则返回给定类型的对象。如果给定参数不知道到给定数据类型的转换,就会产生一个TypeError异常。内置的float与str类型都支持到整数的转换,第6章中我们将看到,将自定义类型转换为整数或其他类型也是可能的。


screenshot

第三种情况是,给定两个或多个参数——但不是所有数据类型都支持,而对支持这一情况的数据类型,参数类型以及内涵都是变化的。对于int类型,允许给定两个参数,其中第一个参数是一个表示整数的字符串,第二个参数则是字符串表示的base。比如,int("A4", 16)会创建一个值为164的整数。表2-3中展示了这种用法。

表2-4中展示了位逻辑操作符,所有的二元位逻辑操作符(|、^、&、<<与>>)都有其对应的增强版赋值操作符(|=、^=、&=、<<=与>>=),这里,x op= y在运算逻辑上与x = x op y是等价的(这里的等价是指通常的情况,即读取x的值没有副作用。)


screenshot

如果需要存放多个true/false标记,就可以使用一个整数;如果需要测试单个位,就可以使用位逻辑操作符。使用布尔值也可以满足要求,虽然不那么紧凑,但是更方便。

2.2.2 布尔型

有两个内置的布尔型对象:True与False。与所有其他的Python数据类型(不管是内置的、标准库的还是自定义的)类似,布尔数据类型也可以当作函数进行调用——不指定参数时将返回False,给定的是布尔型参数时,会返回该参数的一个拷贝,给定的是其他类型的参数时,则会尝试将其转换为布尔数据类型。所有内置的数据类型与标准库提供的数据类型都可以转换为一个布尔型值,为自定义数据类型提供布尔型转换也很容易。下面给出了两个布尔型赋值操作以及两个布尔表达式:

>>> t = True
>>> f = False
>>> t and f
False
>>> t and True
True

前面已经讲过,Python提供了3个逻辑操作符:and、or与not。and与or都使用“短路”逻辑,并返回决定其结果的操作数,not则总是返回True或False。

习惯于使用老版本Python的程序员有时会使用1与0,而非True与False,这种用法几乎总是可以正常工作的,但是建议在需要布尔型值的时候,新代码中还是使用内置的布尔型对象。

2011年2月出的,绝对最新哦,扫描绝对超级清楚。 在本书中,一流的Python程序员Mark Summerfield展示了如何充分利用Python 3的功能与特性来编写代码。与以前的本相比。Python 3功能更强大,使用更方便,语法更一致,表达能力更丰富。本书将编写程序、使用标准或第三方Python 3库、创建新的专用库模块所必需的所有相关知识整合到了一起。 Python是一种脚本语言,在各个领域得到了日益广泛的应用。本书全面深入地对Python语言进行了讲解。 本书首先讲述了构成Python语言的8个关键要素,之后分章节对其进行了详尽的阐述,包括数据类型、控制结构与函数、模块、文件处理、调试、进程与线程、网络、数据库、正则表达式、GUI程序设计等各个方面,并介绍了其他一些相关主题。全书内容以实例讲解为主线,每章后面附有练习题,便于读者更好地理解和掌握所讲述的内容。 作为一名具有多年Python使用经验的程序员,Summerfield在本书中为读者深度分析与讲解了从其他途径无法获取的Python3使用与开发技术。Summerfield从Python的“优美核心(beautiful heart)”(即编写高健壮性、高性能程序的8个关键要素)开始进行讲解,并以这些关键要素为基础,介绍了有助于增强程序开发实用技能的新主题,每个主题都包含其概念和多个操作实例。 本书既可以作为Python编程指南,也可以作为Python语言参考手册。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值