如何在Python函数中返回左值?
如您所知,在C/C++中,我可以在函数中返回指针,并将其用作左值,如下所示:如何在Python函数中返回左值?,python,c,function,python-2.7,Python,C,Function,Python 2.7,如您所知,在C/C++中,我可以在函数中返回指针,并将其用作左值,如下所示: typedef char* (*func)(char *); char* foo(char *a) { return &a[0]; } char* foo2(char *a) { return &a[1]; } void goo(func f, char* a) { f(a)[0] = 10; } int main(void) { char a[6] = {'a', 'b',
typedef char* (*func)(char *);
char* foo(char *a) {
return &a[0];
}
char* foo2(char *a) {
return &a[1];
}
void goo(func f, char* a) {
f(a)[0] = 10;
}
int main(void) {
char a[6] = {'a', 'b', 'c', 'd', 'e', 'f'};
goo(foo, a);
}
如何在Python中实现它(在Python函数中返回左值)
为什么“我的代码”中出现“确定”和“错误?”您可以返回一个可变对象,例如一个元素列表:
a = [None]
def foo():
return a
foo()[0] = "hello"
print(a) # prints "hello"
然而,这并不一定是惯用的Python:Python函数通常传递对象而不是内存缓冲区,因此可能有更好的方法来解决实际问题。它也不能直接模拟
foo
和foo2
函数。也有一些方法可以做到这一点,但它们往往比前面的代码片段更难看。Python字符串是不可变的;您可以从函数返回可变对象,并将其用作分配目标(如果f
返回列表
,则f()[0]=1
将1
分配给返回列表的第一个元素)。你想达到什么目标?
a = [None]
def foo():
return a
foo()[0] = "hello"
print(a) # prints "hello"