Как вы знаете, в C/C++, я могу вернуть указатель на функцию, и использовать его в качестве левого значения, как показано ниже:Как вернуть левое значение в функции Python?
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)?
def foo(a):
return a
def foo2(a):
return a[0, :]
import numpy as np
p = np.random.rand(5, 2)
foo(p)[0,:] = [1,2] # ok
foo2(p) = [1, 2] # error
print p
Почему хорошо и ошибка в моем коде ??
Строки Python не изменяются; вы можете возвращать * изменчивые * объекты из функции и использовать их как цели назначения просто отлично (если 'f' возвращает' list', то 'f() [0] = 1' присваивает' 1' первому элементу из этот возвращенный список). Чего вы пытаетесь достичь? –