在Python中从函数返回左值?

1 投票
3 回答
806 浏览
提问于 2025-04-17 16:20

我尝试写一个函数,想让它返回一个元素的引用,以便可以进行赋值,示例代码大概是这样的(Python3):

row_a = ["rowname","items1","items2"]
def rowname(row):
    return row[0]
rowname(row_a) = "another_rowname"

但是,这个方法不行,因为解释器报错了,提示:

SyntaxError: can't assign to function call

有没有人知道怎么实现这样的函数呢?

3 个回答

0

函数的返回值不能直接当作变量使用。你可以把返回值赋给一个变量。你定义的列表看起来像是想创建一个字典。为什么不直接说出你想要得到的结果呢?

0

我刚发现了一种不太好看的方法……虽然需要用到 setattr

row_a = ["rowname","items"]
def rowname(row):
    class inner:
        def __init__(self):
            self.__dict__["to_l"] = None
        def __setattr__(self,name,value):
            row[0] = value
    return inner()
rowname(row_a).to_l = 20
print(row_a)
1

在Python中没有一种特别优雅的方法来做到这一点。你不能像在C++中那样返回一个左值——Python可不是C++!如果你只是想用一个函数来设置列表第一个元素的值,那就直接这么做:

row_a = ["rowname","items1","items2"]
def set_rowname(row, value):
    row[1] = value
set_rowname(row_a, "another_rowname")

撰写回答