在python中可以通过引用传递引用吗?在C++中,传递数据的Python模型可以通过传递指针到数据来模拟:指针是按值传递的,函数可以改变它指向的任何函数,但是函数不能改变指针的值。但是,C++中还可以传递对指针的引用,在这种情况下,可以修改指针值以及指针指向的值。在
我想的是下面的C++片段,#include
int k=5;
void fun(int * &p)
{
p=&k;
}
int main()
{
int i=3;
int *p = &i;
std::cout << *p << std::endl;
fun(p);
std::cout << *p << std::endl;
}
函数更改传入的指针p的值;输出为“3”和“5”。在
如果我在上面的函数声明中删除“&;”,我会得到如下python片段所做的事情:
^{pr2}$
它打印3两次,因为fun无法更改主体中“reference”p的值。有什么方法能像上面的C++位那样获得行为?在
(为了完整性:我知道python的数据传递模型与按值传递指针不同,因为不需要在函数内部显式地取消引用它。这更像是通过值传递引用。但是,我不能通过引用引用来写上面的C++示例,因为C++不允许我更改引用。所以请忽略这一区别)。在