Python提供了两种内置的 Integral 类型,即 int 与 bool 。整数与布尔型值都是固定的,但由于Python提供了增强的赋值操作符,使得这一约束极少导致实际问题。在布尔表达式中, 0 与 False 表示 False ,其他任意整数与 true 都表示 true 。在数字表达式中,True表示1,False表示0。这意味着有些看起来很怪异的表达式也是有效的。 例如可以使用表达式 i += True
来对整型变量 i
进行递增操作,当然最自然的方法还是 i+=1
Integral (整型)
整数
整数的大小只受限于机器的内存大小,因此包含几百个数字的整数可以很容易地创建与操纵。默认情况下整数采用的是十进制,但在方便的时候也可以使用其他进制
1 | 14600926 #decimal |
语法 | 描述 |
---|---|
x + y |
将数x与数y相加 |
x - y |
从x减去y |
x * y |
将x与y相乘 |
x / y |
用x除以y ,产生一个浮点值(若x或y是一个复数就产生一个复数) |
x // y |
用x除以y ,舍弃小数部分,结果总为整数,参见round() |
x % y |
用 x 除以 y ,取模(余数) |
x ** y |
计算x的y次幂,参见pow() |
-x |
对x取负数,若x为0不做任何操作,否则改变其符号 |
+x |
不做任何操作,有时候用于澄清代码 |
abs(x) |
返回x的绝对值 |
divmod() |
以二元组的形式返回x除以y所得的商和余数(两个整数) |
pow(x,y) |
计算x的y次幂,与操作符 ** 相同 |
pow(x,y,z) |
(x**y)%z 的另一种写法 |
round(x,n) |
返回浮点数x四舍五入后的整数(或给定n将浮点数转换为小数点后有n位) |
所有二元数学操作符(+
、-
、/
、//
、%
与 **
)都有相应的增强版赋值操作符(+=
、-=
、/=
、//=
、%=
与 **=
)。
对象的创建可以通过给变量赋字面意义上的值,比如 x=17
,或者将相关的数据类型作为函数进行调用,比如 x=int(17)
。使用数据类型创建对象时,有三种用例:
第一种情况,不使用参数调用的数据类型函数,这种情况下对象会被赋值为一个默认值,比如
x=int()
会创建一个值为 0 的整数。所有内置的数据类型都可以作为函数并不带任何参数进行调用。第二种情况,使用一个有参数调用的数据类型函数。若给定的参数是同样的数据类型,就将创建一个新对象,新对象是原始对象的一个浅拷贝,例如
x = [1, 2]; y = list(x)
。如果给定的参数不是同样的数据类型,就会尝试进行转换。如果给定参数支持到给定数据类型的转换,但是转换失败,就会产生一个 ValueError 异常,否则返回给定类型的对象。如果给定参数不知道到给定数据类型的转换,就会产生一个TypeError 异常。内置的float
与str
类型都支持到整数的转换。第三种情况,给定两个或多个参数但不是所有数据类型都支持,而对支持这一情况的数据类型,参数类型以及内涵都是变化的。对于
int
类型,允许给定两个参数,其中第一个参数是一个表示整数的字符串,第二个参数则是字符串表示的base
。 比如,int("A4",16)
会创建一个值为164的整数。
布尔型
有两个内置的布尔型对象:True 与 False。布尔数据类型也可以当作函数进行调用——不指定参数时将返回 False,给定的是布尔型参数时,会返回该参数的一个拷贝,给定的是其他类型的参数时,则会尝试将其转换为布尔数据类型。所有内置的数据类型与标准库提供的数据类型都可以转换为一个布尔型值,为自定义数据类型提供布尔型转换也很容易。下面给出了两个布尔型赋值操作以及两个布尔表达式:
1 | True t = |
浮点型
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x10^9
和 12.3x10^8
是完全相等的。浮点数可以用数学写法,如 1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把 10
用 e
替代,1.23x10^9
就是 1.23e9
,或者 12.3e8
,0.000012
可以写成 1.2e-5
等等。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法也是精确的),而浮点数运算则可能会有四舍五入的误差。
浮点数有完整的支持;整数和浮点数的混合计算中,整数会被转换为浮点数。