Python 的整数

老齐 2021-09-15 12:41:42
Python 腾讯云 整数


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

3.1.1 整数

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

>>> 3
3

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

>>> x = 3
>>> x
3

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

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

>>> type(3) # (1)
<class 'int'>
>>> type(x) # (2)
<class 'int'>

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

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

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

>>> zero = 0
>>> type(zero)
<class 'int'>
>>> negative_int = -9
>>> type(negative_int)
<class 'int'>

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

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

>>> 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 中如果直接输入它们,不会如愿以偿:

>>> 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 开头 ——认真阅读报错信息,是自学者和未来的优秀开发者必备意识和能力。

>>> y = 6,371
>>> y
(6, 371)

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

*

自学建议

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

0\sim 2^{64}-1

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

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

>>> 2**1000
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
>>> -2**1000
-10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376

2**1000 表示

2^{1000}

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

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

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

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

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

本文分享自微信公众号 - 老齐教室(itdiffer) ,作者:老齐

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间: 2021-09-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[老齐]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1877621

  1. Python - Programmation orientée objet - pratique (6)
  2. Python - Programmation orientée objet - réflexion hasattr, GetAttr, GetAttr, delattr
  3. Python - Programmation orientée objet - _Dict
  4. Python - pydantic (2) Modèle imbriqué
  5. Non-ASCII character ‘\xe5‘ in file kf1.py on line 4, but no encoding declared; see http://python.or
  6. python笔记(一)
  7. Non - ASCII character 'xe5' in file kf1.py on Line 4, but no Encoding declared;Voirhttp://python.or
  8. Notes Python (1)
  9. Talk about how JMeter executes Python scripts concurrently
  10. In Beijing, you can't see the moon in the Mid Autumn Festival. Draw a blood red moon in Python
  11. Un des pandas crée un objet
  12. Machine learning | unitary regression model Python practical case
  13. Draw a "Lollipop chart" with Excel and python
  14. Python uses scikit learn to calculate TF-IDF
  15. Getting started with Python Basics_ 3 conditional statements and iterative loops
  16. Python dynamic properties and features
  17. 云计算开发:Python内置函数-min()函数详解
  18. [Python skill] how to speed up loop operation and numpy array operation
  19. 雲計算開發:Python內置函數-min()函數詳解
  20. Développement de l'informatique en nuage: explication détaillée de la fonction intégrée python - min ()
  21. 从0起步学Python(附程序实例讲解)第1讲
  22. 从0起步学Python(附程序实例讲解)第1讲
  23. Apprendre Python à partir de 0 (avec des exemples de programme) leçon 1
  24. Apprendre Python à partir de 0 (avec des exemples de programme) leçon 1
  25. With Python, I'll take you to enjoy it for a month when the Mid Autumn Festival is coming
  26. You can't write interface software in Python! Which software on sale has no UI?
  27. Python国内外原题解析及源码1~15
  28. Python实现长篇英文自动纠错~
  29. Python implémente la correction automatique des erreurs en anglais long
  30. Analyse des problèmes originaux et code source de Python au pays et à l'étranger 1 ~ 15
  31. 一张思维导图学Python之表白
  32. Python教学中课程思政建设的研究探索2
  33. Recherche sur la construction idéologique et politique du Programme d'études dans l'enseignement Python 2
  34. Une présentation de la cartographie mentale Python
  35. Python高级用法总结(8)-函数式编程
  36. Python + Mirai development QQ robot starting tutorial (2021.9.9 test is valid)
  37. Python Advanced use Summary (8) - functional Programming
  38. How to get started with Python and share learning methods for free. All you want to know is here
  39. Python + Mirai development QQ robot starting tutorial (2021.9.9 test is valid)
  40. Python趣味编程中(PPT适合青少儿和零基础学习Python)
  41. Python基础第1讲(含代码、Python最新安装包、父与子的编程之旅:与小卡特一起学Python中文版)
  42. 用 Python 增强 Git
  43. Python基礎第1講(含代碼、Python最新安裝包、父與子的編程之旅:與小卡特一起學Python中文版)
  44. Base Python leçon 1 (y compris le Code, le dernier paquet d'installation Python, le voyage de programmation parent - enfant: apprendre la version chinoise de python avec le petit Carter)
  45. Dans la programmation amusante Python (ppt pour les jeunes enfants et l'apprentissage de base zéro Python)
  46. 非常好的题目详解Python字典的用法
  47. Python teaches you to build wechat push live Betta reminder from 0 (single room simplified version)
  48. Python 协程与 JavaScript 协程的对比
  49. 手把手带你用Python实现一个量化炒股策略
  50. Main dans la main pour mettre en œuvre une stratégie quantitative de spéculation boursière en python
  51. Comparaison des coproductions Python et JavaScript
  52. 【python种子项目ppc】一行代码生成项目与开发详细指导
  53. Docker 部署一个用 Python 编写的 Web 应用
  54. Python - poetry(4)管理环境
  55. Python - poetry(2)命令介绍
  56. [Python Seed Project PPC] a line of Code Generation Project and Development detailed guidance
  57. Introduction à la commande python - Poetry (2)
  58. Python - Poetry (4) Management Environment
  59. I collected Banhua's spatial data set in Python. In addition to meizhao, I found her other secrets again!
  60. I modified ban Hua's boot password in Python and found her secret after logging in again!