Python技术迷

公司就三人,我,老板,老板娘,公司挣了些钱,现在他们要离婚,我成为了他们的婚后财产分割一部分。。

公司就三个人,老板、老板娘,还有我,仨人合伙打怪升级两年多,一不小心搞了1200万业绩,我本以为我们是“铁三角”,没想到现在成了“分手三角”。

前几天,老板娘一脸平静地问我:“你跟谁亲?”我当时愣住了,这不就是代码冲突时的终极提问吗?主干分支我到底该站哪边?左边是给我涨工资的老板,右边是给我做饭的老板娘,这要选错了,分分钟git reset --hard我。

我现在每天都像进了merge地狱,坐在工位上,就怕哪天老板拉我去民政局说:“他选择我,他的五险归我。”我想静静,真的,不是我们办公室那个静静,是我本人,想离线。

要不……你们把我裁了吧,赔偿归你俩分,别争了。

【备注:文末可领最新资料】

面试题:Python 的可变类型和不可变类型

有一次面试,面试官突然问我:“Python 里的 mutable 和 immutable 类型你怎么理解?”我心里咯噔一下,表面镇定,实则脑子里已经开始快速检索标准答案。

我觉得这个问题看着基础,其实挺考察思维清晰度的。首先,所谓的 mutable(可变)和 immutable(不可变)类型,说白了,就是你能不能在原地修改这个对象的内容。

比如 list 就是典型的可变类型,你append、pop都能直接操作原对象:

nums = [1, 2, 3]
nums.append(4)
print(nums)  # 输出: [1, 2, 3, 4]

再看 tuple,就不是这么回事了:

t = (1, 2, 3)
# t[0] = 100  # 会报错:'tuple' object does not support item assignment

这里其实不只是表层的“能不能改”,而是涉及 Python 对对象内存模型的设计。比如我们都知道,变量其实是对对象的引用,真正被修改的是对象本身。所以 list 改的是内容,tuple 改不了内容,只能新建一个。

面试官点了点头,又问我:“那 dict 呢?”

我心说这不是送分题吗,dict 跟 list 一样,也是可变的:

person = {'name': 'Alice'}
person['age'] = 30
print(person)  # {'name': 'Alice', 'age': 30}

不过这里要注意一个坑:即使是不可变类型,也能包含可变的内容。比如 tuple 里面可以塞一个 list:

t = (1, [2, 3])
t[1].append(4)
print(t)  # (1, [2, 3, 4])

你可能会想,既然 tuple 是 immutable,那为什么 list 能改?答案是 tuple 本身的结构没变,它仍然是一个指向 int 和 list 的二元组,list 是引用类型,改的是它指向的那块内存。

再举个让人一脸懵的例子,如果你写函数的时候用 mutable 类型做默认参数:

defadd_item(item, container=[]):
    container.append(item)
return container

print(add_item(1))  # [1]
print(add_item(2))  # [1, 2]

大部分人刚学的时候看到这段都会一脸问号:为啥不是 [2]?原因就是默认参数是在函数定义的时候就创建了,是同一个 list,不管你调几次函数。所以正确的写法应该是:

defadd_item(item, container=None):
if container isNone:
        container = []
    container.append(item)
return container

所以我觉得,理解 mutable 和 immutable 不只是知道“谁是可变的”,还得明白 Python 在函数调用、赋值、作用域背后是怎么管理这些对象的。就好比你写个多线程程序,如果你还搞不清楚变量是不是共享状态,那就不是线程问题,是你的基本功要重新 build 一下。

面试最后,面试官笑着说:“你这是讲出了我准备说的话。”我心想,谢天谢地,这波没翻车。

mutable 和 immutable 就像早上开 IDE 的那一刻,你以为只是个开关,其实背后已经悄悄决定了你今天能不能 debug 到下班。

最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek

也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。

对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
🔥虎哥私藏精品 热门推荐🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。

资料包含了《IDEA视频教程》、《最全python面试题库》、《最全项目实战源码及视频》及《毕业设计系统源码》,总量高达650GB,全部免费领取