python中数据类型转换原理_python的可变与不可变数据类型的原理是什么呢?

Python中变量的进阶知识:

涉及到Python的对象知识。

即:可变对象和不可变对象。题目中的可变和不可变数据类型,表述不准确。

Python中,一切皆对象。

对象是一种抽象。抽象是什么?抽象就是一种概念上的简化。

《learning python》中的一个观点:变量无类型,对象有类型。

对象包括三个元素:ID、Type、Value。

ID:是对象在内存的地址。

Type:是对象的类型。

Value:是对象的值。

以 整数 1 作为对象为例:

1.将对象 1 赋值引用给变量 a:(变量对对象是一种引用)

a = 1

2.不用声明数据类型,python自动识别为整数 int 1。

>>> a=1

>>> type(a)

3.对象 1 此时的 value数值 是1。

4.对象 1 的内存地址(变量引用的内存地址id):

>>> a=1

>>> id(a)

4433791280

所以改变一个对象,有三种方式:改变value值、改变type数据类型、改变id内存地址的引用。

抛开type数据类型,因为数据类型通过int()str()可以直接转换。

只讨论value和id。

不可变对象:是什么不可变呢?

可变对象:是什么可变呢?

上面的对象: 整数 1 ,

可以被无数的变量a,b,c,d,apple,进行赋值引用。

但是,

对象 1 在内存地址的引用却没有变化。

对象本身没有因为变量的赋值引用,而发生任何变化。

所以是不可变对象。

>>> a =1

>>> b =1

>>> c =1

>>> d =1

>>> apple =1

>>> id(a)

4399315248

>>> id(b)

4399315248

>>> id(c)

4399315248

>>> id(d)

4399315248

>>> id(apple)

4399315248

除非新建一个对象 2,

在用变量a,b,c,来赋值引用对象2。

>>> a=2

>>> b=2

>>> c=2

>>> id(a)

4433791312

>>> id(b)

4433791312

对比下对象1 和对象2的内存地址的差别:

>>> id(1)

4433791280

>>> id(2)

4433791312

对象1 和对象2 ,虽然变量各种变化,但是各自的内存地址并未改变。

所以,整数型int 的对象,为不可变对象。

可变对象

对象 :列表 [1,2,3]

可以被无数的变量a,b,c,d,apple,进行赋值引用。

对象 [1,2,3] 和对象 [1,2,3] ,虽然看起来都是对象 [1,2,3] ,但所在内存地址的引用,都不相同。

对象本身看似相同,实则内存地址完全不同(不同变量对看似同一对象的赋值引用到的内存地址不同)。

所以,是可变对象。

>>> a = [1,2,3]

>>> b = [1,2,3]

>>> id(a)

4560147392

>>> id(b)

4518877376

关于可变对象的引用拷贝:

对比两段代码:

>>> a = [1,2,3]

>>> b = [1,2,3]

>>> id(a)

4560147392

>>> id(b)

4518877376

>>> b.append(5)

>>> print(b)

[1, 2, 3, 5]

>>> print(a)

[1, 2, 3]

和代码二:

a=[1,2,3]

>>> b=a

>>> b.insert(0,9)

>>> print(b)

[9, 1, 2, 3]

>>> print(a)

[9, 1, 2, 3]

>>> id(a)

4561102848

>>> id(b)

4561102848

可变对象中,第二段代码,关于list的浅拷贝:

浅拷贝:

待补充

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python股票历史最低点_Python统计某一只股票每天的开盘,收盘,最高,最低价格!...

模块:Numpy码字不易,转载请注明出处!十分感谢!准备工作:抓取某一只股票的信息,每30min为一组数据,可以参考上一篇:Note: 只为演示如何统计,更精准的可以抓取每5min为一组…

操作系统是计算机的什么管理者,操作系统是计算机资源的管理者

由计算机提供的、因应用程序的存在和运行所消耗或占用的物质条件,叫做计算机的资 源,例如处理器的时间、内存空间、外部设各等。为了有效地利用计算机的各种资源,操作系统 必须为用户承担起对计算机资源的管理任务。例如,为了使应…

python文件流读取二进制_Python使用web.py从POST请求中提取二进制文件

I am developing an API that allows outside clients to send a binary file which will be processed. my web.data() is a string and the function I am calling requires a binary. How do I get it into the correct format? Maybe I have the incorrect Headers? how …

LeetCode 1828. 统计一个圆中点的数目

文章目录1. 题目2. 解题1. 题目 给你一个数组 points ,其中 points[i] [xi, yi] ,表示第 i 个点在二维平面上的坐标。多个点可能会有 相同 的坐标。 同时给你一个数组 queries ,其中 queries[j] [xj, yj, rj] ,表示一个圆心在…

elasticsearch threadpool

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-threadpool.html转载于:https://www.cnblogs.com/SamuelSun/p/4287218.html

python argument list too long_[已解决]Argument list too long如何处理?

Argument list too long 本质是需要处理的长度超过系统的长度,因此无法执行相关命令。经过搜索发现了两种方法,思想都是将参数切分成小的段落进行执行。法一:通过xargs传递参数 (数据量大了还是不太奏效)find . -name "*.log" | xa…

计算机专业内存容量8g,内存容量8g和16g区别

语音内容:大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。以计算机为例,内存容量8g和16g区别如下:1、16GB和8GB内存在同品牌、同芯片规格等情况下,仅存在容量大小区别,即1…

LeetCode 1829. 每个查询的最大异或值(前缀异或 + 位运算)

文章目录1. 题目2. 解题1. 题目 给你一个 有序 数组 nums &#xff0c;它由 n 个非负整数组成&#xff0c;同时给你一个整数 maximumBit 。你需要执行以下查询 n 次&#xff1a; 找到一个非负整数 k < 2^maximumBit &#xff0c;使得 nums[0] XOR nums[1] XOR ... XOR num…

python的运行环境_python-运行环境配置-1

Linux下安装Python3.6和第三方库 如果本机安装了python2&#xff0c;尽量不要管他&#xff0c;使用python3运行python脚本就好&#xff0c;因为可能有程序依赖目前的python2环境&#xff0c; 比如yum&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 不要动现有的…

[objective-c] 08 - 内存管理

OC语言中的内存管理机制为ARC(Automatic Reference Counting,自动引用计数)。于2011年中旬推出&#xff0c;替换陈旧且低效的手动内存管理&#xff0c;关于手动内存管理的内容&#xff0c;本章教程不再讲授。本章主要从以下几个方面对内存管理进行展开讲解。 内存管理原则对象引…

计算机主板最常见的问题,计算机主板功能 电脑实用技巧解决常见问题

电脑实用技巧解决常见问题1.解决问题 插电即开机问题现象&#xff1a;有些朋友有关机后断开电源板电源的习惯&#xff0c;可是却常常被一个问题困扰&#xff0c;就是电源板一通电&#xff0c;计算机就自动开机了&#xff0c;Power键形同虚设。解决问题&#xff1a;有些主板在BI…

zeal刷新不出来_饥荒:游戏中的这些事物都是无中生有,几乎可以无限制刷新!...

在饥荒这款经典的生存类游戏中&#xff0c;其事物的“刷新”和许多其他的生存游戏不太一样&#xff0c;有些生存游戏的事物刷新是定时定量的&#xff0c;而饥荒则不完全&#xff0c;就拿牛群来形容&#xff0c;他们必须要有多个成年的牛进行繁殖才会出现新的牛&#xff0c;而像…

数字逻辑基础与verilog设计_数字电路学习笔记(五):逻辑设计基础

马上就要正式进入电路设计了&#xff0c;再来看最后一个知识点&#xff1a;逻辑设计吧。之前我们花了两章&#xff0c;探讨了逻辑运算是什么&#xff0c;怎么算&#xff1b;但还有最后一个大问题&#xff0c;巧妇难为无米之炊&#xff0c;我们得先有一个逻辑式&#xff0c;才能…

完整的开发一个ContentProvider步骤

1、定义自己的ContentProvider类&#xff0c;该类需要继承Android提供的ContentProvider基类。2、向Android系统注册这个"网站"&#xff0c;也就是在AndroidManifest.xml文件中注册这个ContentProvider&#xff0c;就像注册Activity一样。注册ContentProvider时需要为…

河北省高校计算机大赛,河北省教育厅关于举办2016年华北五省(市、自治区)及港澳台大学生计算机应用大赛河北赛区竞赛的通知...

有关高等学校&#xff1a;为深入贯彻落实《国家中长期教育改革和发展规划纲要(2010-2020年)》和教育部《关于全面提高高等教育质量的若干意见》(教高﹝2012﹞4号)精神&#xff0c;推动区域高等教育合作发展、资源共享&#xff0c;培养大学生创新能力、实践能力和团队协作意识&a…

adhoc包无法安装_iOS 5.1.1 设备不能安装AdHoc问题版本号

之前苹果更新了审计规范&#xff0c;要求必须支持64通过苹果的审核权限位架构的应用。但运营商表示反馈。使用iOS5.1.1该系统无法安装我们的包Adhoc版本号。认为非常莫名。由于我们在Deployment Target上确实写着5.1.1&#xff0c;全公司也都没人用这个系统了。在运营纠结这个问…

c盘清理代码_拒接卡顿,从c盘减负、系统修复及网络加速做起!奥利~~~

你是否有过系统卡顿&#xff0c;C盘饱满&#xff1f;你是否有过蓝屏、闪退&#xff1f;你是否有过网络爆卡&#xff1f;今天&#xff0c;他来了&#xff0c;一篇文章教会你清理C盘、修复系统、网络加速&#xff01;&#xff01;&#xff01;首先&#xff0c;按下winr键&#xf…

LeetCode 1833. 雪糕的最大数量(贪心)

文章目录1. 题目2. 解题1. 题目 夏日炎炎&#xff0c;小男孩 Tony 想买一些雪糕消消暑。 商店中新到 n 支雪糕&#xff0c;用长度为 n 的数组 costs 表示雪糕的定价&#xff0c;其中 costs[i] 表示第 i 支雪糕的现金价格。 Tony 一共有 coins 现金可以用于消费&#xff0c;他…

HDU 3605Escape(缩点+网络流之最大流)

题目地址&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid3605 本来打算昨天写两道题的&#xff0c;结果这个题卡住了&#xff0c;最后才发现是最后的推断条件出错了&#xff0c;推断满流的条件应该是与n的比較&#xff0c;居然写成与全部星球总容量的比較了。&#xf…

为学好计算机 要采取什么措施,计算机概念教学的内容及对策

摘 要:介绍有关概念教学的重要性及在概念教学中重视培养学生的思维能力、概念教学过程中应注意的问题和概念教学中采取的包括淡化、浅化、深化、跨越,在概念教学中应注意的问题,关键词:概念教学;淡化;浅化;深化;跨越中图分类号:G434文献标识码:AAccording to Different Content…