Python学习系列十一:动态类型

来源:互联网 发布:手机文件传输软件 编辑:程序博客网 时间:2024/05/16 04:37

1、Python中有一类特殊的对象,用于存储数据的。常见的该类对象包括了各种数字,字符串,表,词典。对象是存储在内存中的实

体。但是我们并不能直接接触到该对象。我们在python程序中写的对象名,只是指向这一对象的引用(reference)。

2、引用和对象分离,是动态类型的核心。引用可以随时指向一个新的对象

3、不可变数据对象(immutable object)

比如数字和字符串,不能改变对象本身,只能改变引用的指向

a=5b=aprint(a,b)a=a+2print(a,b)

b=a让a、b指向同一个对象,但是a=a+2让a重新指向另外一个新的对象。所有这个时候a、b分别指向不同的对象。可以看出即使是多

个引用指向同一个对象,如果一个引用值发生变化,那么实际上是让这个引用指向一个新的引用的指向。就是各个引用各自独立,互相不影响。

4、可变数据对象

列表、词典可以通过引用其元素,改变对象自身。这种对象类型称为可变数据对象。需要注意的是元组尽管可以调用引用元素,但是不可以赋值,因此

能改变对象自身,所有元组是不可变数对象。


L1=[1,2,3]L2=L1L1[0]=10print(L1)print(L2)

L1和L2指向同一个对象,改变元素的值,并没有改变对象的指向,故L1的指向对象并没有改变,所以L1和L2依然指向同一个对象。

5、函数值传递

如果实参是可变数据对象,那么实参和形参互相独立,互不影响

def f(x):    x=100    print(x)a=1f(a)print(a)


如果实参是不可变数据对象,那么实参和形参指向同一个对象,互相影响。


def f(x):    x[0]=100    print(x)a=[1,12,34]f(a)print(a)



0 0
原创粉丝点击