python 变量和对象

2022/3/19 20:28:23

本文主要是介绍python 变量和对象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

C变量是值的容器,用于保存相应的值。

Python 也有变量和值的概念,但是值是独立的对象,而变量是用来标识(引用)对象的。对象有类型,不同对象的大小也不同,我们不需要知道对象的大小,只需要根据对象的类型正确使用,如果某个对象不用了,python会有回收机制将其回收。

id(1)
>>140723104982832

a=1
id(a)
>>140723104982832

变量的赋值和共享:

两个变量之间进行赋值,等同于两个变量共享(引用)同一个对象

b=a ##不可变对象情况
id(b)

>>140723104982832


c=[1,2,3] ##列表是一个可变对象
d=c 
id(c)
>>3113652251584

id(d)
>>3113652251584

c.append(4)
c
>>[1, 2, 3, 4]

id(c)
>>3113652251584

d
>>[1, 2, 3, 4]

id(d)
>>3113652251584

c=c+[5] #对列表进行+操作会生成新对象
id(c)
>>3113652144000

z=[1,2,3,4]
id(z)
>>3113652295232

拷贝和共享

表拷贝是构造另一个“同样”的表,但是只拷贝表的一层,如果表中的元素是不可变对象那么共享元素不会带来问题,如果拷贝表中的元素是可变对象,则需要深度拷贝。

a1=[[i+j for i in range(3)] for j in range(3)]
a1
>>[[0, 1, 2], [1, 2, 3], [2, 3, 4]]

a2=a1.copy()

a1[0][0]=5
a1
>>[[5, 1, 2], [1, 2, 3], [2, 3, 4]]

a2
>>[[5, 1, 2], [1, 2, 3], [2, 3, 4]]

##解决方案 一层层复制
a1=[[i+j for i in range(3)] for j in range(3)]
a3=[[x for x in vec] for vec in a1]
a3
>>[[0, 1, 2], [1, 2, 3], [2, 3, 4]]

##深度copy
import copy
a4=copy.deepcopy(a1)
a4
>>[[0, 1, 2], [1, 2, 3], [2, 3, 4]]

a1[0][0]=5
a1
>>[[5, 1, 2], [1, 2, 3], [2, 3, 4]]

a3
>>[[0, 1, 2], [1, 2, 3], [2, 3, 4]]

a4
>>[[0, 1, 2], [1, 2, 3], [2, 3, 4]]



这篇关于python 变量和对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程