免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 40523 | 回复: 1
打印 上一主题 下一主题

python的函数怎么使用传递引用的方式? [复制链接]

论坛徽章:
1
水瓶座
日期:2014-03-20 18:21:14
1 [报告]
发表于 2006-07-05 15:34 |显示全部楼层
“引用”本身就违反严格的结构化程序设计思路,更违反OO
“引用”本质上就是C的传指针,改地址里的内容,就这么回事情

论坛徽章:
1
水瓶座
日期:2014-03-20 18:21:14
2 [报告]
发表于 2006-07-06 17:45 |显示全部楼层
“引用”,“代名词”什么的,本质上就是指针
List本身也就是一个指针,你用C可以做一个List结构出来。只不过python里面的指针不是那么明显存在的罢了
比如[1,'6','ftg']
他肯定有一个入口地址,当你把它作为一个参数传给别人的时候,实际上是把那个指向入口地址的指针传了过去,然后对方根据入口地址可以把整个list结构读取出来
严格到汇编的层次,跟没就没有什么“传值”的概念,操作数都是地址,就算是常量也是先扔到一个寄存器然后传寄存器名(寄存器名不还是地址吗)

所以,没有必要追究什么到底是传值、传引用还是穿指针,这些不过都是假象。你只要知道能把“那个东西”传过去,然后得到一个“这个东西”就可以了

python中是高级抽象,变量名不等于地址,一个list常量你都可以传,指针都是隐含的。记住python中所有的东西都是高级抽象,所有哪怕是简单的常数相加的操作,在后台也是经过很复杂处理的。所以python中变量不需要声明,因为python中每一个常量实际上都是一个C写的数据结构,都有完整的内存空间,有它的入口地址,因此变量声明不存在意义。python中不需要也不可以直接控制内存

“传引用”也是一种抽象方法,是为了解决某些语言不能返回多个值的手段,如果可以返回多个值,那么就没有必要这么罗嗦了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP