- 论坛徽章:
- 1
|
“引用”,“代名词”什么的,本质上就是指针
List本身也就是一个指针,你用C可以做一个List结构出来。只不过python里面的指针不是那么明显存在的罢了
比如[1,'6','ftg']
他肯定有一个入口地址,当你把它作为一个参数传给别人的时候,实际上是把那个指向入口地址的指针传了过去,然后对方根据入口地址可以把整个list结构读取出来
严格到汇编的层次,跟没就没有什么“传值”的概念,操作数都是地址,就算是常量也是先扔到一个寄存器然后传寄存器名(寄存器名不还是地址吗)
所以,没有必要追究什么到底是传值、传引用还是穿指针,这些不过都是假象。你只要知道能把“那个东西”传过去,然后得到一个“这个东西”就可以了
python中是高级抽象,变量名不等于地址,一个list常量你都可以传,指针都是隐含的。记住python中所有的东西都是高级抽象,所有哪怕是简单的常数相加的操作,在后台也是经过很复杂处理的。所以python中变量不需要声明,因为python中每一个常量实际上都是一个C写的数据结构,都有完整的内存空间,有它的入口地址,因此变量声明不存在意义。python中不需要也不可以直接控制内存
“传引用”也是一种抽象方法,是为了解决某些语言不能返回多个值的手段,如果可以返回多个值,那么就没有必要这么罗嗦了 |
|