在Python中从函数返回左值?
我尝试写一个函数,想让它返回一个元素的引用,以便可以进行赋值,示例代码大概是这样的(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")