文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>python中的eval函数的求值...

python中的eval函数的求值...

时间:2010-08-18  来源:egg90

程序员对python的eval()内置函数褒贬不一,我在使用eval函数时 发现了这样的问题:

>>> class Foo: ... val = 1 ... >>> foo = Foo() >>> foo.val 1 >>> eval_foo = eval("foo") >>> eval_foo <__main__.Foo instance at 0x01C48080> >>> eval_foo.val = 10000 >>> foo.val 10000  

而不用类的时候,传递的是值.

>>> a = 1 >>> b = eval("a") >>> b 1 >>> b = 10000 >>> b 10000 >>> a 1  

以为int long float str这些类型是静态(定长)类型 在python给这些变量赋值时,在内存中也分配了确定的空间,在重新赋值后,如上面的b=10000时,其实b已经变成了另外的一个int对象..

但是如果用类的话,只是相当于获得了一个引用,所以foo eval_foo指向的是同一个对象,当然属性是一样的,一个改变另一个也会改变.

其实后来发现 这个 特性其实和eval无关..囧,,

如果不想获得一个引用 那么我们就要用到拷贝,包括浅拷贝(copy模块的copy函数)和深拷贝(copy模块中的deepcopy函数).

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载