You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何部分对象方法可赋值给变量,部分却不可?

Python方法赋值差异的原因

这本质是Python方法的两种设计逻辑:返回新对象和原地修改(in-place),两者的行为决定了能否把调用结果赋值给变量。

返回新对象的方法

像readlines()这类方法,调用时会生成一个全新的对象并返回。你拿到的返回值是独立于原对象的新数据,因此可以直接赋值给变量。

示例代码:

with open('test.py', 'r') as file:
    f = file.readlines()

这里f接收的是方法返回的、包含文件每行内容的新列表,原文件对象不会被这个返回值影响。

原地修改的方法

列表的sort()属于原地修改方法,这类方法的作用是直接修改调用它的原对象本身,不会返回新的有效数据(实际返回None)。如果把这类方法的调用结果赋值给变量,变量得到的只会是None,而原对象已经被修改完成。

错误示例:

cars = ['Ford', 'BMW', 'Volvo']
y = cars.sort()
print(y)  # 输出 None

正确写法是直接调用方法,之后使用被修改后的原对象:

cars = ['Ford', 'BMW', 'Volvo']
cars.sort()
print(cars)  # 输出 ['BMW', 'Ford', 'Volvo']

额外补充:Python里可变容器(如列表、字典)的很多方法都是原地修改的,比如列表的append()、字典的update()。如果需要获取修改后的新对象而不改动原数据,可以用对应的非原地替代方案,比如列表的sorted()函数:

cars = ['Ford', 'BMW', 'Volvo']
y = sorted(cars)
print(y)  # 输出新排序后的列表
print(cars)  # 原列表保持不变

内容的提问来源于stack exchange,提问作者Hardliner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:45:03