Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python函数中返回左值?_Python_C_Function_Python 2.7 - Fatal编程技术网

如何在Python函数中返回左值?

如何在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',

如您所知,在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', '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"