Python 可以实例化一个变量并同时返回它的值或引用吗?

she*_*ale 3 python python-3.x

Python 可以实例化一个变量并同时返回它的值或引用吗?

像这样工作的东西

fruits = list()
fruits.append(apple = Fruit()) # (apple = Fruit()) <= Would return a reference/value
fruits.append(orange = Fruit())

apple.do_something()
fruits[1].do_something()
Run Code Online (Sandbox Code Playgroud)

显然,您可以使用 访问对象fruits[n],但是 Python 可以这样做吗?为什么?

Sha*_*ger 8

从 3.8 开始,是的,使用“海象运算符”:=(正式称为“赋值表达式”):

fruits = list()
fruits.append(apple := Fruit())
fruits.append(orange := Fruit())

apple.do_something()
fruits[1].do_something()
Run Code Online (Sandbox Code Playgroud)

:= 允许将赋值作为表达式而不是语句,并且表达式的计算结果为所赋值的事物。

在 3.8 之前,这是不可能的;你必须把它分开。对现有代码的最不冗长的修改类似于:

fruits = list()
fruits.append(Fruit())
fruits.append(Fruit())
apple, orange = fruits   # Unpacks list to multiple names all at once
Run Code Online (Sandbox Code Playgroud)

或存储到名称并构建列表:

apple = Fruit()
orange = Fruit()
fruits = [apple, orange]
Run Code Online (Sandbox Code Playgroud)