eval(str [,globals [,locals ]]) -- 函数将字符串str当成有效Python表达式来求值,并返回计算结果。

例 :  eval('3+4')         ==>  7

>>> a = 1
>>> b = eval("a")
>>> id(a)
505910960
>>> id(b)
505910960
>>> b = 1000
>>> id(b)
16834704
>>> a
1

根据eval函数的含义:把1赋值给变量b  ==> 让b指向1的内存地址     b = 1000 ==>让b指向1000的内存地址

这里牵涉到一个概念:python的赋值是只是把变量的内存地址赋值给另一个变量,这一点可以使用python的内建方法id()来进行测试

我们假设'QH'这个字符串在内存中的地址是a,'LJQ'在内存中的地址是b
you='QH' #让you变量指向a地址
me=you #让me变量和you变量一样指向a地址
you='LJQ' #修改you变量,让它指向到b地址
print you #可想而知you指向的是b地址,所以它的值为'LJQ'
print me #me指向的是a地址,所以它的值为'QH'
输出:
LJQ
QH
class Foo:
val = 1 foo = Foo()
print(foo.val)
==> 1
print(foo)
==> <__main__.Foo object at 0x010153D0>
eval_foo = eval("foo")
print(eval_foo)
==> <__main__.Foo object at 0x010153D0>
eval_foo.val = 1000
print(foo.val)
==> 1000

eval_foo = eval("foo") 将foo对象的地址传递给eval_foo

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

若添加 eval_foo = Foo() 将创建一个实体对象,内存的地址将与foo的内存地址不同

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

Python eval 函数说明的更多相关文章

  1. python——eval()函数

    eval()函数用来执行一个字符串表达式,并返回表达式的值. 语法:eval(expression[, globals[, locals]]) x = 4 print(eval('3 * x'))12 ...

  2. Python eval()函数的用法

    Python eval()函数的用法 eval(str)函数很强大,官方解释为:将字符串str当成有效的表达式来求值并返回计算结果.所以,结合math当成一个计算器很好用. eval()函数常见作用有 ...

  3. python eval函数,将列表样式的字符串转化为列表

    python eval函数,将列表样式的字符串转化为列表 >>> str_1 = '[1,2,3,4,5,6]'>>> type(str_1)<type 's ...

  4. Python eval 函数用途

    Python eval 函数用途: eval 函数可将字符串转换成列表,元组和字典 实例如下: 可以把list,tuple,dict和string相互转化. ##################### ...

  5. Python eval 函数妙用

    eval 功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source, globals, locals) -> value 参数: source:一个Python ...

  6. python eval()函数的妙用和滥用

    eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果: >>> s='8*8' >>> eval(s) 64 >& ...

  7. python eval函数

    eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果. 可以把字符串转为list.tuple .dict  等数据类型 1.把字符串转为字典 ####### ...

  8. Python:eval的妙用和滥用

    时间 2014-07-08 13:05:24 CSDN博客 原文  http://blog.csdn.net/zhanh1218/article/details/37562167 主题 Python ...

  9. python笔记-调用eval函数出现invalid syntax错误

    本来是想打算使用eval函数对变量进行赋值的,没想到出现了invalid syntax错误.源代码如下 In [2]: eval('a = 1') File "<string>& ...

随机推荐

  1. PokeCats开发者日志(十)

      现在是PokeCats游戏开发的第三十三天的中午,收到了中国版权保护中心软件登记部发来的受理通知书.   上易版权看一眼,貌似离拿证不远了.   想一想还有点小激动呢!

  2. 【beta】Scrum站立会议第1次....11.3

    beta阶段,我们nice!团队将进行为期两周的冲刺,Scrum站立会议10次. 小组名称:nice! 组长:李权 成员:于淼  刘芳芳韩媛媛 宫丽君 项目内容:约跑app(约吧) 时间:2016.1 ...

  3. HDU 1995 R-汉诺塔V

    https://vjudge.net/contest/67836#problem/R 用1,2,...,n表示n个盘子,称为1号盘,2号盘,....号数大盘子就大.经典的汉诺塔问 题经常作为一个递归的 ...

  4. 重新看《JavaScript高级程序设计》

    几点心得: 1)数据是基础,一共有3种基础数据:null.undefined.和object:遵循从无到有从简单到复杂的演变过程 2)衍生数据:衍生数据是指操作符合语句,这些是基础数据产生导致的必然结 ...

  5. python Django框架接入微信公众平台

    1.在接入微信公众平台之前,需要在微信公众平台配置好基本信息,如下: 这个时候点击“提交”按钮,会提示“Token校验失败”,不要着急,这是必然会出现的现象,先不要退出页面,保留各项输入的数据,按第二 ...

  6. Windows Sever 2008隐藏和系统属性

    由于有些目录为隐藏和系统属性,首先要把 显示系统文件和显示所有文件 功能开启,把隐藏文件和目录显出来. 1.C:\Windows\Web\Wall*** 自带墙纸,不需要的可以删除掉. 2.C:\Wi ...

  7. Microsoft Edge goes Chromium

    Microsoft Edge goes Chromium https://techcrunch.com/2018/12/06/microsoft-edge-goes-chromium-and-maco ...

  8. C#操作access练习

    ORM框架使用dapper,dapper不仅能操作sqlserver,也能操作access,下面为基本代码: OleDbConnection strConnection = new OleDbConn ...

  9. 【bzoj1634】[Usaco2007 Jan]Protecting the Flowers 护花 贪心

    题目描述 Farmer John went to cut some wood and left N (2 <= N <= 100,000) cows eating the grass, a ...

  10. main方法为什么是静态的

    main函数其实也是所在类的一个方法,就比如一个类是test,那么该类的main其实就是test.main(String[] args),众所周知如果一个方法不是静态的,则要先实例化该类,比如要这样  ...