更多代码:
Gitee主页:https://gitee.com/GZHzzz
博客主页:
CSDN:https://blog.csdn.net/gzhzzaa
0 写在前面
- 复习一下python 基础数据结构,大家一起多多交流,互相学习啊!😊
- Python在heap(堆:程序员自己分配释放)中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的
内容 可变,而不可变对象是指对象内容不可变 python中,万物皆对象
1 不可变对象
-
不
可
变
(
i
m
m
u
t
a
b
l
e
)
不可变(immutable)
不可变(immutable):int、字符串(string)、float、(数值型number)、元组(tuple)
1.1 示例一
i = 73
i += 2
内容变化 需要分配新的内存空间,因为原来的对象内容不可变。- 从上图可知,不可变对象创建了新对象,改变了变量的对象引用。
1.2 示例二
x = 1
y = 1
x = 1
x is y
'True'
y is z
'True'
-
如上所示,因为整数为不可变,x,y,z在内存中均指向一个值为1的内存地址 ,也就是说,x,y,z均指向的是同一个地址,值得注意的是,整形来说,目前仅支持(-1,100)。 -
总结一下,不可变对象的优缺点。
- 优点是,这样可以
减少重复 的值对内存空间的占用。 - 缺点呢,我要修改这个变量绑定的值,如果内存中没用存在该值的内存块,那么
必须重新开辟 一块内存,把新地址与变量名绑定。而不是修改变量原来指向的内存块的值,这回给执行效率 带来一定的降低。
2 可变对象
-
可
变
(
m
u
t
a
b
l
e
)
可变(mutable)
可变(mutable):字典型(dictionary)、列表型(list)
2.1 示例
其对象的内容是可以变化的。当对象的内容发生变化时,变量的对象引用是不会变化的
m=[5,9]
m+=[6]
二、函数参数: Python函数参数对于可变对象,函数内对参数的改变会影响到原始对象;对于不可变对象,函数内对参数的改变不会影响到原始参数。原因在于:
-
可变对象,参数改变的是可变对象,其内容可以被修改 -
不可变对象,改变的是函数内变量的指向对象
3
i
s
is
is 与
=
=
==
== 的联系区别
3.1 python中的is机制
-
i
s
is
is 是用于判断两个变量的
引用对象 是否相同,也就是说a is b等价于
i
d
(
a
)
=
=
i
d
(
b
)
id(a)==id(b)
id(a)==id(b),引用对象相同,地址是相同的
a=1
b=1
print(a is b)
a=1.1
b=1.1
print(a is b)
a=[1]
b=[1]
print(a is b)
- python 为了性能考虑,对于值相同的不可变对象,都不会重新创建新的地址来存储对象,而对于可变对象,则会重新开辟空间(
i
d
不
一
样
id不一样
id不一样)
3.2 python中的==机制
- == 则是判断两个对象的
值 是否相等(更常用),不管两个变量的引用对象是否相同
a=1
b=1
print(a==b)
a=[1]
b=[1]
print(a==b)
写在最后
十年磨剑,与君共勉! 更多代码:Gitee主页:https://gitee.com/GZHzzz 博客主页:CSDN:https://blog.csdn.net/gzhzzaa
基于pytorch的经典模型:基于pytorch的典型智能体模型 强化学习经典论文:强化学习经典论文
while True:
Go life
谢谢点赞交流!(?′?`?)
|