可变类型与不可变类型对象概念
对象在内存中存储了三个数据:id(标识),就是内存地址,相当于C的指针type(类型),数据类型value(对象值),对象存储的内容
例如说,一个整型对象——1,或者说一个字符对象‘a’,它们都具有上述三个数据存储在内存中。
顾名思义,可变类型就是允许改变对象的值(内容),不可变类型即相反。
而可变类型对象与不可变类型对象的具体区别在于对象本身是否可变,这涉及到对象的地址问题。分类
可变...
可变类型 Vs 不可变类型可变类型(mutable):列表,字典(推荐学习:Python视频教程)不可变类型(unmutable):数字,字符串,元组这里的可变不可变,是指内存中的那块内容(value)是否可以被改变可以使用内建函数id()来确认对象的身份在两次赋值前后是否发生了变化。可变数据类型,变量名存储的是一个地址,该地址指向一个具体的对象,并且不管对变量的值即对象做怎么样的操作,都不会改变变量名存储的地址。可变类型的话,以l...
python变量可以分为两种类型不可变类型(数字、字符串、元组、不可变集合)可变类型(列表、字典、可变集合)python所声明的变量都以对象的形式存在,存在于机器的固定内存之中。可以理解为变量名为对象的指针集合我们常用来进行去重和关系运算,集合是无序的。s = {1,d,34,1,1}
print(s,type(s),id(s))
s.add(djx)
print(s,type(s),id(s))
result:
{d, 1, 34, 1} <class set> 870405285032
{1, 34, djx, 1, d} <class set> 870405...
什么是可变/不可变对象不可变对象,该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。可变对象,该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,实际上是其所指的值直接发生改变,并没有发生复制行为,也没有开辟新的出地址,通俗点说就是原地改变。Python中,数值类型(int和float)、...
以下所有的内容都是基于内存地址来说的不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变字符串b = djx
print(id(b),type(b))
b = djx1...
数据类型之可变与不可变类型
文章目录
数据类型之可变与不可变类型一.可变类型1.什么是可变类型2.可变类型有哪些3.示例
二.不可变类型1.什么是不可变类型2.不可变类型有哪些3.示例一.可变类型
1.什么是可变类型
在值改变的情况下, 内存地址(ID)不变, 证明改变的是原值即可变类型—>也叫不可 hash 类型
2.可变类型有哪些
列表 : list字典 : dict
3.示例
列表 list
?修改前
li = ['aaa', 'bbb', 'ccc']
print(li) # ['aaa', 'bb...
视频、源码、课件、软件、笔记:超全面Python基础入门教程【十天课程】博客笔记汇总表【黑马程序员】 Python基础day05【函数(函数传参的两种形式、函数形参)、拆包、引用、可变与不可变类型、引用做函数参数注意点】 目录
5.01 局部变量
<1>什么是局部变量
<2>小总结
5.02 全局变量
<1>什么是全局变量
总结1
<2>全局变量和局部变量名字相同问题
总结2
<3>修改全局变量
总结3
5.03 多函数程序的基本执行流程
1. 使用全局变量
2. 使...
1.python中的可变类型和不可变类型python中的数据类型大致可分为6类:1.Number(数字) 2. String(字符串) 3. Tuple (元组) 4. List(列表) 5. Dictionary (字典) 6. Sets(集合) (bool布尔类型、int整型、float浮点型、complex复数等都归为Number数字类型)
这6种数据类型中不可变类型为number、string、tuple,可变类型为:list、dict、set不可变类型:不可变类型的变量在第一次赋值声明的时候,会在内存中开辟一块空间,用来存储这...
一.可变类型与不可变类型的特点
1.不可变数据类型
不可变数据类型在第一次声明赋值声明的时候, 会在内存中开辟一块空间, 用来存放这个变量被赋的值, 而这个变量实际上存储的, 并不是被赋予的这个值, 而是存放这个值所在空间的内存地址, 通过这个地址, 变量就可以在内存中取出数据了. 所谓不可变就是说, 我们不能改变这个数据在内存中的值, 所以当我们改变这个变量的赋值时, 只是在内存中重新开辟了一块空间, 将这一条新的数据存放...
我对可变对象和不可变对象之间的区别感到有些困惑.我尝试了以下代码块来查找对象的id:tuple1 = ('Object1', 'Object2')
print id(tuple1)
tuple2 = ('Object1', 'Object2')
print id(tuple2)
list1 = ['Object1', 'Object2']
print id(list1)
list2 = ['Object1', 'Object2']
print id(list2)
string1 = "Foo bar"
print id(string1)
string2 = "Foo bar"
print id(string2)我为字符串获得了相同的id,并为列表提供了不同的id,但是...
我想知道什么是最pythonic方式来做以下工作并让它工作:strings = ['a','b']for s in strings: s = s+'c'显然这在python中不起作用,但我想要实现的结果是strings = [‘ac’,’bc’]什么是实现这种结果的最pythonic方式?
谢谢你的答案!解决方法:
strings = ['a', 'b']
strings = [s + 'c' for s in strings]
可变类型:改变数据内容,地址不变:list,dict,set
不可变类型:改变数据内容,地址改变
- 数值类型:int,long,bool,float
- 字符串 : str
- 元组: tuple
可变类型的影响:函数的默认参数是在执行函数定义时创建出来的,而且只执行了一次,后面每次调用函数时,使用的都是这一个列表
除非,每次调用给他赋值,才能每次修改默认参数。