免费注册 查看新帖 |

Chinaunix

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

这里理解是不是不合理??给点意见 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-07 22:13 |只看该作者 |倒序浏览
python中的所有定义的都是“引用标识符”,它的“引用标识符”又和C/C++的有点不同:

1)可重新引用,但不能传入函数的引用。一般的引用标识符。

    def myFun(a):

    a=a+1

    a=0

    myFun(a)

    print(a)    #这里还是0,没有保存修改值。

2)不可重新引用。 不可变容器的成员标识符

    string=(”jessinio”,”jason”)

    string[0]=”abcde”    #出错!因为不能重新引用。

3)可重新引用、可传入函数的引用。 如:可变容器的成员标识符。

    能完成上面的所有问题。

论坛徽章:
0
2 [报告]
发表于 2007-01-07 22:55 |只看该作者
Immutable & Mutable
Immutable 包括
Number,Strings,Unicode,Tuples
其他对象基本上都是mutable.

Immutable对象就相当于是常量对象。多个值相等的变量可能指向的是同一个内存空间。

数值是Immutable这个概念,某种程度上是python数值计算性能低下的元凶。想象一下a=a+1这个操作
首先要把 a指向的对象和 “1”这个对象相加,生成新的对象,然后把新的对象赋值给a。

论坛徽章:
0
3 [报告]
发表于 2007-01-07 23:26 |只看该作者
原帖由 jessinio 于 2007-1-7 22:13 发表
python中的所有定义的都是“引用标识符”,它的“引用标识符”又和C/C++的有点不同:

1)可重新引用,但不能传入函数的引用。一般的引用标识符。

    def myFun(a):

    a=a+1

    a=0

    myFun ...


我觉得把Python的定义理解为“命名-对象”绑定机制要比引用更合理。

论坛徽章:
0
4 [报告]
发表于 2007-01-08 03:52 |只看该作者
Python和C是两种完全不同的语言。你这是在瞎联系。

Python是面向对象的编程语言。你可以这样理解。Python解释器里面有个对象池,所有对象都放在这个池子里面。Python的变量名就像是一个个遥控器。通过这个遥控器,你可以控制对象池里面的对象的行为。而赋值就是和一个绑定过程,将遥控器绑定到对象上面。接下来,遥控器是可以随意绑定的。也就是赋值一次,变量名就绑定到新的对象上面了。

Python的对象分两种。可变(mutable)的和不可变的(immutable)。字符串和数字,还有你第二个例子里面的tuple都是不可变的。也就是说你可以通过遥控器去使用对象,但是你不能去改变对象里面的内容。

tuple本身是一个对象,所以当你拿到tuple的遥控器后,它里面装了哪些对象就不能再变了。

但是tuple保存的是对象的遥控器。所以如果这个对象本身是可变的,那么你可以用tuple的slicing得到遥控器,进而修改这个具体的对象。

论坛徽章:
0
5 [报告]
发表于 2007-02-22 23:10 |只看该作者
原帖由 March.Liu 于 2007-1-7 23:26 发表


我觉得把Python的定义理解为“命名-对象”绑定机制要比引用更合理。


赞同,我觉得python说穿了,就是命名空间的诀窍
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP