Python eval 函数说明
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 函数说明的更多相关文章
- python——eval()函数
eval()函数用来执行一个字符串表达式,并返回表达式的值. 语法:eval(expression[, globals[, locals]]) x = 4 print(eval('3 * x'))12 ...
- Python eval()函数的用法
Python eval()函数的用法 eval(str)函数很强大,官方解释为:将字符串str当成有效的表达式来求值并返回计算结果.所以,结合math当成一个计算器很好用. eval()函数常见作用有 ...
- python eval函数,将列表样式的字符串转化为列表
python eval函数,将列表样式的字符串转化为列表 >>> str_1 = '[1,2,3,4,5,6]'>>> type(str_1)<type 's ...
- Python eval 函数用途
Python eval 函数用途: eval 函数可将字符串转换成列表,元组和字典 实例如下: 可以把list,tuple,dict和string相互转化. ##################### ...
- Python eval 函数妙用
eval 功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source, globals, locals) -> value 参数: source:一个Python ...
- python eval()函数的妙用和滥用
eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果: >>> s='8*8' >>> eval(s) 64 >& ...
- python eval函数
eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果. 可以把字符串转为list.tuple .dict 等数据类型 1.把字符串转为字典 ####### ...
- Python:eval的妙用和滥用
时间 2014-07-08 13:05:24 CSDN博客 原文 http://blog.csdn.net/zhanh1218/article/details/37562167 主题 Python ...
- python笔记-调用eval函数出现invalid syntax错误
本来是想打算使用eval函数对变量进行赋值的,没想到出现了invalid syntax错误.源代码如下 In [2]: eval('a = 1') File "<string>& ...
随机推荐
- 【week6】约跑App视频链接
约跑视频链接发布在优酷,链接如下: http://v.youku.com/v_show/id_XMTc3NTcyNTcyNA==.html 秒拍视频连接: http://www.miaopai.com ...
- vuex介绍--一篇看懂vuejs的状态管理神器
原文,请点击此链接http://www.ituring.com.cn/article/273487
- 普通用户如何启动WCF服务
做Winform项目时,部署到客户机上有两个应用程序,Host和Client,在Host上运行着WCF服务供Client调用.平时现在在测试的时候都没发现有问题,但是当安装到客户的正式环境时发现服务启 ...
- [CLR via C#]异常和状态管理
当CLR检测到某个正在运行的.NET应用程序处于一种特殊的正常执行顺序被打断的状态时,会生成一个异常对象来表示这个错误,并将此对象在方法调用堆栈中向上传送.如果一个程序引发了一个异常却没有处理,CLR ...
- WPF DataGrid的使用
构造数据: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy ...
- 【bzoj2091】[Poi2010]The Minima Game dp
题目描述 给出N个正整数,AB两个人轮流取数,A先取.每次可以取任意多个数,直到N个数都被取走.每次获得的得分为取的数中的最小值,A和B的策略都是尽可能使得自己的得分减去对手的得分更大.在这样的情况下 ...
- BZOJ4811 Ynoi2017由乃的OJ(树链剖分+线段树)
先考虑NOI2014的水题,显然从高位到低位贪心,算一下该位取0和1分别得到什么即可. 加强这个水题,变成询问区间.那么线段树维护该位取0和1从左到右和从右到左走完这个节点表示的区间会变成什么即可,也 ...
- Python 源码剖析(六)【内存管理机制】
六.内存管理机制 1.内存管理架构 2.小块空间的内存池 3.循环引用的垃圾收集 4.python中的垃圾收集 1.内存管理架构 Python内存管理机制有两套实现,由编译符号PYMALLOC_DEB ...
- 51nod 1286 三段子串(树状数组+拓展kmp)
题意: 给定一个字符串S,找到另外一个字符串T,T既是S的前缀,也是S的后缀,并且在中间某个地方也出现一次,并且这三次出现不重合.求T最长的长度. 例如:S = "abababababa&q ...
- 算法训练 Bus Tour
问题描述 想象你是一个在Warsaw的游客,而且预订了一次乘车旅行,去城镇外看一些令人惊异的景点.这辆公共汽车首先围绕城镇行驶一段时间(一段很长的时间,由于Warsaw是一个大城市),把在各自旅馆的人 ...