assignment in python(python中的变量赋

2019-11-18  本文已影响0人  9_SooHyun

python中的6种基本数据类型

可变对象和不可变对象

python中一切都是对象
这些对象中,
有些对象的是不可变化的,这些对象叫不可变对象
有些对象的则是可变化的,这些对象叫可变对象

在上述6种基本数据类型中,int bool str tuple 这4类的实例对象的值是不可变的,而list dict 这2类的实例对象的值是可变的

python中的变量赋值 assignment in python

新new、无名的对象 = 刚出生、待起名的娃

我们可以给娃起正名、花名等很多个名字。对于这些名字而言,它们与娃产生了对应关系,这才有了意义

在python中,我们也可以给对象起名字,比如可以把对象叫做 a / b / c...
这里的a / b / c在程序中就叫做变量(名),对象则是一个个具体的值

例如
# 把int型对象1赋给变量a、b,也就是对象1有2个名字:a、b
a = b = 1

python变量赋值: a=b=1

当执行新的赋值语句 a = a + 1时,我们将 a+1 这个对象赋给了a,即:
# 把新的int型对象a+1,即int型对象2赋给变量a
a = 2

新的int型对象2与之前的int型对象1存放在内存中的不同位置,是完全不同的2个对象

新的int对象2赋值给变量a

每一个不可变对象存放在内存中属于自己的一片内存空间,对应着自己特有的、不同于其他对象的值,

如果2个不可变对象取值相同,那么这2个对象是同一个对象

例如
>>> c = [1, 2, 3]
>>> id(c)
1825408249160
>>> d = [1, 2, 3]
>>> id(d)
1825408249416
# 下面改变 c 和 d 指向的list对象的值
>>> c.append(4)
>>> id(c)
1825408249160
>>> d.pop(-1)
3
>>> id(d)
1825408249416

通过内存id可以发现,c指向的值为[1, 2, 3]的list对象d指向的值为[1, 2, 3]的list对象 完全是 2个不同的对象

另外,通过改变 c 和 d 指向的list对象的值,发现修改前后的对象id是一样的,这说明,虽然值改变了,但对象还是原来那个对象。append后c还是指向原来的对象,只是值变了;同样的,d pop后也还是指向原来的对象,只是该对象的值变了

python中函数传参本质--给函数形参赋值

def f(a):
    a = 2
b = 1
f(b)
print(b)

上面代码结果是什么?1还是2?答案是1

python中向函数传参,实质上是给函数的形参赋值

f(b)发生的是f(a=b),b给形参a赋值
那么a就和b一样,也指向了1


然后进入函数体,执行a = 2,于是就...

你说print(b)是1还是2?

上一篇下一篇

猜你喜欢

热点阅读