从Python中的函数返回左值?

时间:2013-02-19 04:54:44

标签: python function reference lvalue

我试着编写一个可以返回元素引用的函数,示例代码如下所示(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)

没有Pythonic这样做的方法。你不能在Python中返回左值 - Python不是C ++!如果您只想使用函数来设置列表第一个元素的值,就这样做:

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

答案 1 :(得分:0)

函数的返回值不能用作变量。您可以将返回值分配给变量。您的列表定义看起来像是要创建字典。为什么不完全按照预期得到的呢?

答案 2 :(得分:0)

刚刚发现了一个丑陋的方式...... Thougn 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)