云学python (第5章对象带你飞之一切皆对象 动态类型)《vamei-从Python开始学编程》 笔记

6.3我是风儿,我是沙​​​​​​​ 

1.动态类型

动态类型(Dynamic Typing)Python的另一个重要核心概念。前面说过,Python的变量不需要声明。在赋值时变量可以重新赋值为其他任意值。

a = 1

Python中,整数1是一个对象。对象的名字是“a”。但更精确地说,对象名其实是指向对象的一个引用。对象是存储在内存中的实体。对象名是指向这一对象的引用(reference)。借着引用操作对象,就像是用筷子夹起热锅里的牛肉。对象是牛肉,对象名就是那双好用的筷子。

通过内置函数id()能查看到引用指向的是哪个对象。这个函数能返回对象的编号:

a = 1

print(id(1))

print(id(a))
______________
4300382472
4300382472
_____________
#Python中还有一个  getattribute  ()特殊方法,用于查询任意属性。

可以看到,赋值之后,对象1和引用a返回的编号相同。

Python中,赋值其实就是用对象名这个筷子去夹其他的食物。每次赋值时,我们让左侧的引用指向右侧的对象。引用能随时指向一个新的对象:

a=3
print(id(a))
a = "at"
print(id(a))
_____________
4385284424
4380401968

第一个语句中,3是储存在内存中的一个整数对象。通过赋值,引用a指向对象3。第二个语句中,内存中建立对象“at”是一个字符串。引用a指向了“at”通过两次的id()返回能发现,引用指向的对象发生了变化。既然变量名是个随时可以变更指向的引用,那么它的类型自然可以在程序中动态变化。因此,Python是一门动态类型的语言。

一个类可以有多个相等的对象。比如两个长字符串可以是不同的对象,但它们的值可以相等。

除了直接打印id外,还可以用is运算来判断两个引用是否指向同一个对象。但对于小的整数和短字符串来说,Python会缓存这些对象,而不是频繁地建立和销毁它们。因此,下面的两个引用指向同一个整数对象3

a= 3

b= 3

print(a is b)  

——————————————-
True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值