Python之整型

2023-11-04

1、python中一切都是对象,因此python中其实根本不存在int float这些类型。
2、int其实是一个python对象。
3、整数类型 int,在python中实际是上长整型,理论是可以存储无限大小的整型数,正数负数和0。

一、int类型的结构

python中的一个int(或其他)映射到c语言中是一种复杂结构体。所以所占的字节比C语言中大很多。
python实际的值只是相应C结构中的一个属性,难怪python的int占28个字节,而C语言只需要4个字节,因为python还存储了很多相关的其他信息!其他信息是实际数值的6倍大小。

typedef struct {
    PyObject_HEAD
    long ob_ival;
} PyIntObject;
struct _longobject {undefined
    long ob_refcnt;  // 引用计数
    PyTypeObject *ob_type; //变量类型
    size_t ob_size;  //实际占用内容大小
    long ob_digit[1];  //存储的实际python值
};

python的int在 longintepr.h 中定义:

struct _longobject {
    PyObject_VAR_HEAD
    digit ob_digit[1];
};

这结构是什么意思呢,重点在于 ob_digit 它是一个数组指针。digit 可认为是 int的别名。
python的整型存储机制是这样的。比方要表示一个很大的数:123456789 。
而每个元素最大只能表示3位十进制数(为理解打的比方)。那么python就会这样存储:

ob_digit[0] = 789
ob_digit[1] = 456
ob_digit[2] = 123

低位存于低索引下。python中整型结构中的数组,
每个元素最大存储 15 位的二进制数(不同位数操作系统有差异32位系统存15位,64位系统是30位)。

二、int类型所占的内存大小

python中可以用sys.getsizeof(object)来获取对象所占内存的大小。

import sys

# 内存大小
print(sys.getsizeof(0)) # 24个字节
print(sys.getsizeof(1)) # 28个字节
print(sys.getsizeof(999999999)) # 28个字节
print(sys.getsizeof(1000000000)) # 28个字节
print(sys.getsizeof(1210101010)) # 32个字节
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python之整型 的相关文章

  • 为什么我不能导入 geopandas?

    我唯一的代码行是 import geopandas 它给了我错误 OSError Could not find libspatialindex c library file 以前有人遇到过这个吗 我的脚本运行得很好 直到出现此错误 请注意
  • Python 中的六边形自组织映射

    我在寻找六边形 自组织映射 http en wikipedia org wiki Self organizing map在Python上 准备好模块 如果存在的话 绘制六边形单元格的方法 将六边形单元作为数组或其他方式使用的算法 About
  • 如何自动替换多个文件的文本内容中的字符?

    我有一个文件夹 myfolder包含许多乳胶表 我需要替换其中每个字符 即替换任何minus sign by an en dash 只是为了确定 我们正在替换连字符INSIDE该文件夹中的所有 tex 文件 我不关心 tex 文件名 手动执
  • 在 Python 中使用 sec 函数的反函数

    我正在创建一个程序 用于计算从一定高度范围和设定初始速度发射射弹的最佳角度 在我需要使用的最终方程中 存在一个反 sec 函数 它导致了一些麻烦 我已经导入了数学并尝试使用 asec 无论如何 但是数学似乎无法计算反秒函数 我也明白 sec
  • Python 中 genfromtxt() 的可变列数?

    我有一个 txt具有不同长度的行的文件 每一行都是代表一条轨迹的一系列点 由于每条轨迹都有自己的长度 因此各行的长度都不同 也就是说 列数从一行到另一行不同 据我所知 genfromtxt Python 中的模块要求列数相同 gt gt g
  • Sorted(key=lambda: ...) 背后的语法[重复]

    这个问题在这里已经有答案了 我不太明白背后的语法sorted 争论 key lambda variable variable 0 Isn t lambda随意的 为什么是variable在看起来像的内容中陈述了两次dict 我认为这里的所有
  • 行为:如何从另一个文件导入步骤?

    我刚刚开始使用behave http pythonhosted org behave 一个Pythonic BDD框架 使用小黄瓜语法 http docs behat org guides 1 gherkin html 行为需要一个特征 例
  • Python 中的这种赋值方式叫什么? a = b = 真

    我知道关于元组拆包 http docs python org tutorial datastructures html tuples and sequences但是当一行中有多个等号时 这个赋值被称为什么 阿拉a b True 它总是让我有
  • Python unicode 字符代码?

    有没有办法将 Unicode 字符 插入 Python 3 中的字符串 例如 gt gt gt import unicode gt gt gt string This is a full block s unicode charcode U
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • Python 矩阵每一行的总和

    lista 1 2 3 4 5 6 7 8 9 print lista def filas lista res for elemento in lista x sum lista elemento res append x print re
  • Plotly:如何避免巨大的 html 文件大小

    我有一个 3D 装箱模型 它使用绘图来绘制输出图 我注意到 绘制了 600 个项目 生成 html 文件需要很长时间 文件大小为 89M 这太疯狂了 我怀疑可能存在一些巨大的重复 或者是由单个项目的 add trace 方法引起的 阴谋 为
  • Scrapy 蜘蛛无法工作

    由于到目前为止没有任何效果 我开始了一个新项目 python scrapy ctl py startproject Nu 我完全按照教程操作 创建了文件夹和一个新的蜘蛛 from scrapy contrib spiders import
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • 具有指定置信区间的 Seaborn 条形图

    我想在 Seaborn 条形图上绘制置信区间 但我已经计算出置信区间 如何让 Seaborn 绘制我的置信区间而不是尝试自行计算它们 例如 假设我有以下 pandas DataFrame x pd DataFrame Group 1 0 5
  • 使用“pythonw”(而不是“python”)运行应用程序时找不到模块

    我尝试了这个最小的例子 from flask import Flask app Flask name app route def hello world return Hello World if name main app run deb
  • 从时间序列生成日期特征

    我有一个数据框 其中包含如下列 Date temp data holiday day 01 01 2000 10000 0 1 02 01 2000 0 1 2 03 01 2000 2000 0 3 30 01 2000 200 0 30
  • 如何在SqlAlchemy中执行“左外连接”

    我需要执行这个查询 select field11 field12 from Table 1 t1 left outer join Table 2 t2 ON t2 tbl1 id t1 tbl1 id where t2 tbl2 id is
  • 将此 MATLAB 代码转换为 Python 时我做错了什么?

    我正在努力将生成波形的 MATLAB 代码转换为 Python 就上下文而言 这是原子力显微镜带激发响应的模拟 与代码错误无关 在 MATLAB 中从 r vec 生成的图形与我在 Python 中生成的图形不同 我是否正确地将 MATLA

随机推荐

  • 美国职业专家:工作效率和薪水加倍七秘诀

    如果问 你想不想使自己的收入加倍 我猜每个人的答案都是 YES 如果我继续问 你相不相信现在你的收入会加倍 我想有一些人可能会没把握 有一些人认为不太可能 我告诉各位 你们每个人的收入一定会加 倍 因为按照每年物价增长率及通货膨胀的正常速度
  • 剑指offer java版 test66—机器人运动路径

    题目 地上有一个m行和n列的方格 一个机器人从坐标0 0的格子开始移动 每一次只能向左 右 上 下四个方向移动一格 但是不能进入行坐标和列坐标的数位之和大于k的格子 例如 当k为18时 机器人能够进入方格 35 37 因为3 5 3 7 1
  • 【Qt Quick聊天软件练习】二、登录界面搭建

    目录 1 主界面 2 创建登录面板qml文件 3 补充 结语 1 主界面 大概长成这样 2 创建登录面板qml文件 新建一个qml文件命名为LoginPanel qml 首先先把右上角两个圆圈搓出来 一个是缩小 一个是关闭 main qml
  • Anaconda下安装mysql-python的包

    Anaconda下需要使用Python与MySQL数据库进行交互 所以需要import一个mysql python的包 但是在ipython中引用的时候发现Anaconda并没有包含该包 因此需要自己对该依赖包进行安装 打开windows下
  • 非投资建议

    沪深300 PE在10左右 就是基金的买点 20不能买 低值买入 基金经理 从业5年 年华收益15 以上 PE PB P 总市值 E 盈利 净利润 B 净资产 PE 市盈率 PB 市净率 一 市盈率PE 1 公式是 PE P E 市盈率的计
  • ARM LINUX与普通LINUX区别

    相对于ARM linux 我们说的普通linux指的是X86 linux 他们都是linux系统 但是由于ARM和X86是不同的CPU架构 他们的指令集不同 所以软件编译环境不同 软件代码一般不能互用 一般需要进行兼容性移植 X86是经典的
  • 一篇关于程序员的文章

    选择比努力更重要 关于方向的选择其实越早确定越好 生活中我们要面临无数个选择 前几天看的一个黑客相关的美剧中有句台词说的不错 life is binary 生活就是二进制 一个个0101组成的 每一次抉择 选了就是1 不选就是0 另外也有一
  • java 多线程面试题及答案

    1 并行和并发有什么区别 并行是指两个或者多个事件在同一时刻发生 而并发是指两个或多个事件在同一时间间隔发生 并行没有对 CPU 资源的抢占 并发执行的线程需要对 CPU 资源进行抢占 并行执行的线程之间不存在切换 并发操作系统会根据任务调
  • maven安装与配置 及 执行命令mvn -v报错解决方案

    写在前边 需要准备的前提 JDK IDEA Maven程序包 安装包下载地址 http maven apache org download cgi 解压后如下图 记住解压路径 然后新建环境变量MAVEN HOME 并赋值 D apache
  • 单相Boost功率因数校正电路(PFC)设计与仿真(Simulink & Saber):第一章 PFC基础知识与电路参数设计

    写在前面 教程是根据Mathworks公司的有源功率因数校正教程 点这里跳转 和那日沙等老师编著的 电力电子 电机控制系统的建模及仿真 改写的 设计思路基本与之一致 嫌看文章麻烦的同学可以直接跳转看视频和查阅相关书籍 Simulink仿真部
  • vue实现绑定微信登录全过程

    一 需求说明 通过vue绑定微信登录 首次进入获取code 通过code获取openId查用户 然后进行登录 第二次进入若绑定过微信 直接登录进入主界面 若没绑定过微信 则跳转到登录页面 二 准备工作 1 开通微信公众号的相关功能 测试账号
  • oracle时间相减得到天_Oracle 时间相减得出毫秒、秒、分、时、天,,【转】

    http blog csdn net redarmy chen article details 7351410 oracle 两个时间相减默认的是天数 oracle 两个时间相减默认的是天数 24 为相差的小时数 oracle 两个时间相减
  • Linux netstat

    摘录 https www runoob com w3cnote linux check port usage html Linux 查看端口占用情况可以使用 lsof 和 netstat 命令 lsof lsof list open fil
  • 电赛公开课整理(一),电路基础,截图+模电知识【16000字】【个人注释】【转载】

    文章目录 电赛公开课整理 一 电路基础 截图 模电知识 15000字 原创 电赛公开课整理 二 电路基础 截图 模电知识 16000字 原创 一 电压源和电流源 1 电压源的内阻 2 电流源的内阻 课后问题 二 电阻 电容与电感 1 电阻
  • (小白学习之路1)Linux环境下C语言链接Mysql数据库,连接失败问题

    可能出现的问题 can t connect to xxx数据库 说明数据库验证成功但是打不开 需要添加libmysqlclient so动态库 需要查看动态库的位置 一般在usr local下 如果没有该库需要手动下载 http blog
  • 20行代码实现人脸检测

    如今 刷脸 已经成为人们生活中的日常 刷脸支付 人脸解锁 门禁等 都运用了人脸识别技术 人脸识别技术已广泛应用于金融 司法 公安 教育 医疗等诸多领域 同时也涌现出如 旷视科技 商汤科技等一批优秀的企业 人脸识别算法主要分为三个流程 人脸检
  • DNF类游戏动作实现(C语言)

    没有接触制作小游戏前 感觉做游戏很不可思议 游戏里的人物是怎么移动的 怎么攻击 释放技能 现在逐渐了解到之后 发现2d游戏人物的动作更多是图片的拼接 动作是否精细 由这个动作的帧数决定 这篇博客会简单实现2d人物的动作 效果如下 2d人物动
  • rnn pytorch_pytorch介绍rnn字符级文本生成

    rnn pytorch Today we ll continue our journey through the fascinating world of natural language processing NLP by introdu
  • MySQL可见_MySQL 8.0新特性 -- 不可见索引

    MySQL支持不可见索引 即优化器不会使用该索引 不可见索引特性不可以用于主键 默认索引是可见的 可以在create table create index alter table操作中使用关键字visible invisible来指定索引是
  • Python之整型

    1 python中一切都是对象 因此python中其实根本不存在int float这些类型 2 int其实是一个python对象 3 整数类型 int 在python中实际是上长整型 理论是可以存储无限大小的整型数 正数负数和0 一 int