Python是否类似于C / C ++中的->运算符?

因此,在Python中,您可以执行以下操作:


def append(_list):

    _list.append(1)


_list = [0]

append(_list)

print(_list)

显然,这使我可以将1附加到列表中,但是,如果我在append函数中更改列表的引用,则它不会更改(这是通过对象传递引用所期望的)。Java的工作原理类似,但是被认为是通过引用。这是否仅表示Python像C ++一样,当它传递通过值指向对象然后再取消引用的指针(类似于使用C / C ++的->运算符时)?


繁星coding
浏览 171回答 2
2回答

莫回无

Python中的重要区别不是按值传递或-reference传递,而是在可变对象和不可变对象之间传递。基本上所有内容都是通过引用传递的,但是如果对象不允许您对其进行修改(它是不可变的),则无法更改通过引用传递的原始对象。例如,Pythonints是不可变的,因此即使int通过引用传递,您也永远无法修改原始对象。如果要执行此操作,则必须将对象包装在可变对象(例如列表)中。列表可以修改(追加,弹出等)因此,您可以“说” Python的属性访问.与C ++类似,->但这是Python的一种奇怪的术语。在您的示例中,您传递了一个可变对象(列表)。因此,追加将修改原始对象。因此,您的代码的输出为[0, 1]。(您应该在您的问题中包括该内容。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python