Python基础学习:内置类型(1)

Python中基本内置类型由数字、序列、映射、类、实例和例外。一些集合类是可变的,因此那些可以增添、删除或排列这些类的方法不会奏效,只会返回None,用来示意函数调用者逻辑上的错误。但同时,几乎所有操作都支持几种典型的函数操作,比如说:比较、真值测试以及用str()或repr()函数转化为字符串。总而言之,了解Python内置的类型有助于编程者使用这门语言进行各类开发测试工作。

1.真值测试

       所有的对象都支持真值测试,真值测试可以使用if或while语句,也可以使用布尔操作符进行。该语言默认,一个对象应该具有True的属性,除非该类在被调用时使用__bool__()方法返回了False或者使用__len__()方法返回了数字0。一般来讲,以下的内置对象呗认为具有False属性:

(1)被定义具有False属性的常量:None与False;

(2)任何数字类型中的0:0,0.0,0j,Decimal(0),Fraction(0);

(3)空的序列或集合:’’,(),[],{},set(),range(0)。

       操作和内置函数通常返回0或False表示其具有False属性,返回1或True表示其具有True属性。但有一个及其重要的例外:布尔操作中的or和and总是返回它们自己所有的一个操作数以表明自己的布尔属性。

2.布尔操作:and、or与not

操作

实现流程

x or y

如果x是真,直接返回x;

如果x是假,返回y(结合上文思考)

x and y

如果x为真,返回y;

如果x为假,直接返回x。

not x

如果x为假,返回False;

如果x为真,返回True。

       not是一个低优先级的操作(优先级低于非布尔操作),例如:not x==y 语句等价于 not (x==y),并且x == not y 这个用法会导致索引错误。

3.比较

       Python中有八种比较操作,这些比较操作具有相同的优先级。,下表列出具体的操作符号:

操作

操作含义

严格小于

<=

小于或等于

严格大于

>=

大于或等于

==

等于

!=

不等于

is

对象身份比较

is not

忽略对象身份

       除了不同类型的数字外,其它类型的对象永远不会相等。此外,某些类型(例如函数对象)仅支持简单的比较概念,即任何两种类型的对象都不相等。这些比较操作会在其比较两个不同类的对象时抛出TypeError错误。is和not操作符的行为是不可定制的;它们也可以应用于任何两个对象,并且不会引发异常。

       in和not in这两个仅用于序列对象的操作与这些比较操作拥有相同的优先级。

4.数字类型——int、float与complex

       数字类型有三个下级分支:整数,浮点数和复数。需要指出的是,布尔数是一个整数的子类型。整数具有无限精度,也就是说在Python中不限制整数的位数。浮点数通常在C中使用double实现;复数有一个实部和虚部,每个部分都是一个浮点数。要从复数z中提取这些零件,请使用z.real和z.imag。(标准库包含其他数字类型,保留有理数的分数以及用户可定义的精度保存浮点数的小数。)

       数字由数字文字或内置函数和运算符的结果创建。未经修饰的整数文字(包括十六进制,八进制和二进制数字)将产生整数。包含小数点或指数符号的数字文字会生成浮点数字。将'j'或'J'附加到数字字面上会得到一个虚数(一个具有零实数部分的复数),您可以将其添加到整数或浮点数以获得具有实部和虚部的复数。

       下表列出数字类型支持的操作:

操作

结果

x + y

x与y的和

x – y

x减y的差

x * y

x乘y的积

x / y

x除y的商

x // y

x除y的商向下求整

x % y

x除y的余数

-x

非x

+x

x不变

abs(x)

x的绝对值

int(x)

将x转化为整型数

float(x)

将x转化为浮点数

complex(re,im)

re为复数的实部,im为复数的虚部

c.conjugate()

数字c的共轭数

divmod(x, y)

等价于(x//y, x%y)

pow(x, y)

等价于x^y

x ** y

等价于x^y

       所有的实数类数字(整型和浮点数)都支持下述操作:

操作

结果

math.trunc(x)

把x截断为整型数

round(x[, n])

x四舍五入为n位数,四舍五入最后一位为偶数。如果省略n,则默认为0。

math.floor(x)

小于等于x的最大整数

math.ceil(x)

大于等于x的最小整数

       math和cmath模块内由丰富的数字操作函数。

4.1 整数类型的按位运算

       位操作仅对整型数敏感。位操作中,负数等价于它的补码值(假定有足够的位数以便在操作期间不发生溢出)。位操作的优先值高于所有的比较操作,但低于所有的数学操作。但是,~的优先级与+与-这两个数学操作的优先级相同。下表以升序优先级列出了所有位操作:

操作

结果

x | y

x与y按位或

x ^ y

x与y按位异或

x & y

x与y按位与

x << n

x左移n位

x >> n

x右移n位

^x

x按位非

4.2 整型数的额外方法

int.bit_length()

       返回表示二进制整数所需的位数,不包括符号和前导零

int.to_bytes(length, byteorder, *,signed=False)

       返回表示整数的字节数组。

classmethod int.from_bytes(bytes,byteorder, *, signed=False)

       返回给定字节数组所表示的整数。

4.3 浮点数的额外方法

float. as_integer_ratio()

       返回一对整数,其比例与原始浮点数完全相等,并带有一个正的分母。

float. is_integer()

       如果float实例是有限整数值,则返回True,否则返回False.

float. hex()

       将浮点数的表示形式返回为十六进制字符串。对于有限的浮点数,这种表示将始终包       含一个前导0x和一个尾随p和指数。

classmethod float. fromhex(s)

       返回由十六进制字符串s表示的float。

4.4 散列数字类型(哈希数)

       对于可能具有不同类型的数字x和y,只要x == y,就需要hash(x)== hash(y)。 为了便于跨多种数字类型(包括int,float,decimal.Decimal和fractions.Fraction)的实现和效率,Python的数字类型哈希基于为任何有理数定义的单个数学函数,因此适用于所有 int和fractions.Fraction的实例,以及所有有限的float和decimal.Decimal实例。 从本质上讲,这个函数是通过对一个固定素数P减模P给出的.P的值可作为sys.hash_info的模特属性提供给Python。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值