​Python黑魔法揭秘:为什么说“万物皆对象”?

你好呀,Python爱好者!👋 你是否曾听大佬们说“Python里连数字都是对象”?🤔 今天,我们就来聊聊这个让新手懵圈、老手直呼内行的 “一切皆对象” 哲学!

🚀 一、一个让新手怀疑人生的例子

先看这段代码:

a = 5
b = 5
print(a is b)  # 输出啥?True还是False?

答案:True!
惊不惊喜?连数字5都不是“值”,而是内存中的某个神秘对象!这背后的秘密,正是Python的对象模型

📦 二、解剖Python对象:身份证、户口本和肉身

Python中每个数据(是的,每一个!)都是对象,自带三大“基因”:

  1. 身份证号id(obj),代表对象的内存地址,独一无二!

  2. 户口类型type(obj),决定对象能干啥(如int会加减乘除)。

  3. 肉身数据:对象存储的具体值,比如5"hello"

举个栗子🌰:

s = "信息科技云课堂"
print(id(s))        # 输出一串神秘数字:对象的“家门牌号”
print(type(s))      # <class 'str'>,原来是字符串家族!
print(s.upper())    # "码农人生"变身大写?错!中文表示不背这锅😂

🔄 三、变量?只是对象的“快捷方式”!

重要结论:变量不是“盒子”,而是对象的“贴纸”!

  • 执行a = 1000时,Python在内存中创建了一个int对象,然后给这个对象贴上了a的标签。

  • 再执行b = a,不过是把同一张对象贴纸复制给了b

a = 1000
b = a
print(id(a) == id(b))  # True,贴纸指向同一个对象!

🎭 四、颠覆认知:这些居然全是对象!

你以为只有数字和字符串?格局打开!
函数是对象:能当参数传递、能赋值给变量!
是对象:类本身是type类的实例(元类黑魔法的基础)
模块是对象:import numpy后,numpy也是个对象!
None是对象:它是NoneType家的独苗!

def 唱首歌():
    print("🎵 爱你孤身走暗巷~")

唱歌 = 唱首歌
唱歌()  # 输出歌声!函数对象被“转手”了

print(type(int))  # <class 'type'>,int类竟是type类的孩子!

🔧 五、对象分两种:钢铁直男与变形金刚

  • 钢铁直男(不可变对象)int, str, tuple
    试图修改?不!直接造个新对象。

a = 5
a += 1  # 新对象诞生,旧对象原地去世(可能)
  • 变形金刚(可变对象)list, dict
    原地变身,内存地址不变!

lst = [1, 2]
lst.append(3)  # 还是那个lst,但内涵变了!

❓ 六、灵魂拷问区

  1. 为什么a = 257; b = 257a is b可能是False?

  2. 如何让函数“记住”上次调用的状态?(提示:可变对象妙用)

  3. (评论区等你提问!)

🎯 七、为什么关心“万物皆对象”?

  • 写代码更高效:理解可变/不可变对象,避免Bug坑!

  • 装X必备:面试时侃晕面试官!

  • 掌握高阶玩法:装饰器、元类…这些骚操作全基于对象模型!

🔥 挑战任务

在Python中运行这段代码,并思考为什么?

a = "hello"
b = "hello"
print(a is b)  # 输出True还是False?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信息科技云课堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值