前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 的整数

Python 的整数

作者头像
老齐
发布2021-09-15 11:30:38
2K0
发布2021-09-15 11:30:38
举报
文章被收录于专栏:老齐教室

说明: 本文是正在编写的一本书的草稿,在微信公众号选择发布,请读者赏析。 ”

3.1.1 整数

进入到 Python 交互模式中,输入一个整数:

代码语言:javascript
复制
>>> 3
3

就返回了所输入的数字,这说明 Python 解释器接受了所输入的那个数字,并且认识了它。

代码语言:javascript
复制
>>> x = 3
>>> x
3

对此也不陌生,在第2章2.3节已经自学过变量,此处的 x 即为一个变量,它引用了 3

上面的操作中,不论是单独输入 3 还是输入 x = 3,都是用 Python 语言创建了一个对象,它就是整数 3 。何以见得?可以用下面的方式来检验:

代码语言:javascript
复制
>>> type(3)    # (1)
<class 'int'>
>>> type(x)    # (2)
<class 'int'>

其中 type() 是 Python 的内置函数(先记住这个名词,详细介绍请参阅3.3.1节),以注释(1)为例,3 作为该函数的参数,返回值 <class 'int'> 说明此对象的类型是 'int' ,即整数(integer)。

由此可知,在 Python 中定义一个整数类型的对象非常简单,只要通过键盘输入整数即可。

如果定义 0 和负数,也是用同样的方法:

代码语言:javascript
复制
>>> zero = 0
>>> type(zero)
<class 'int'>
>>> negative_int = -9
>>> type(negative_int)
<class 'int'>

此处,之所以能如此简单地创建整数或者说整数类型的对象,完全得益于 Python 语言的开发环境已经为我们定义了名为 int 的对象类型——称为“内置对象类型”或“内置对象”,即当 Python 环境配置好之后,本地就已经存在,可以直接使用,不需要开发者来定义。

在 Python 中,与每种内置对象相对应,定义了一个同名的内置函数,通过此内置函数也可以定义该对象。以创建整数为例:

代码语言:javascript
复制
>>> a = int()
>>> a
0
>>> type(a)
<class 'int'>
>>> b = int(9)
>>> b
9
>>> type(b)
<class 'int'>

不过,通常较少如此应用,int() 内置函数更多地应用于类型转换(参阅3.3.1节)。

在日常生活中,我们还会看到这样书写的整数:

  • “005”:在整数“5”前面有两个“0”,依然表示整数“5”,那两个“0”仅仅是占位罢了;
  • “6,371”:在数字中用一个英文的逗号作为分隔符(叫做“千位分隔符”,每三位数加一个逗号)。

但是,在 Python 中如果直接输入它们,不会如愿以偿:

代码语言:javascript
复制
>>> x = 005            
  File "<stdin>", line 1
    x = 005
          ^
SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers

Python 解释器不认识 005 ,强行输入就会出现上述异常,通过上述报错信息可知,整数不能用 0 开头 ——认真阅读报错信息,是自学者和未来的优秀开发者必备意识和能力。

代码语言:javascript
复制
>>> y = 6,371
>>> y
(6, 371)

这里没有报错,但是,所得到的不表示本意——是另外一类 Python 对象,详见第4章4.4节。

自学建议

如果读者对计算机的基本原理有所了解,会知道这样一个结论:在计算机上,存储的数字并非是无限大或者无限小的。例如,64位的中央处理器所能存储的无符号整数范围是

0\sim 2^{64}-1

,如果超过此范围,就会发生算术溢出(arithmetic overflow)——此内容的详细解释不在本书范围,请读者自行参阅“计算机原理”的相关资料深入学习。

但是,在 Python 中如果创建超出上述理论范围的整数——注意是“整数”,不会出现溢出现象。

代码语言:javascript
复制
>>> 2**1000
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
>>> -2**1000
-10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376

2**1000 表示

2^{1000}

,显然这是一个非常非常大的整数,但是没有如计算机原理中所说的那样出现溢出现象。

这是什么原因?难道 Python 神奇到能超越硬件限制吗?非也!

读者如果对这种现象感兴趣,不妨在网上搜索,能找到有关说明资料。

如果读者按照上述过程思考,并动手搜索,通过阅读有关资料对问题的缘由有所了解,就是在实践着自学中一个重要的环节:将所学内容与已有知识进行联系,并利用网络解决其中的疑问。

更多内容,请参考 www.itdiffer.com 网站

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老齐教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3.1.1 整数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档