Python里的eval( )和repr( )的个人理解

eval()函数

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

参数:
source: 一个 Python 表达式或函数 compile()返回的代码对象
globals: 可选。必须是 dictionary
locals: 可选。任意映射对象

s='print("a+b")'
eval(s)    #结果:a+b
a=10
b=20
f=eval("a+b")
print(f)   #结果:30


dict1=dict(a=100,b=200)
h=eval("a+b",dict1) #dict1表示a、b的值来源于该字典中的key的值
print(h)            #结果:300

【注:eval 函数会将字符串当做语句来执行,因此会被注入安全隐患。比如:字符串中含有删除文件的语句。那就麻烦大了。因
此,使用时候,要慎重!!!】
eval()的功能也可以这么理解,就是去掉字符串表达式的引号,得到原来字符所表现的属性。

a = "123"
type(a)
<class 'str'>
b = eval(a)
b
123
type(b)
<class 'int'>
x='7'
x
'7'
a=eval(x)
a
7
b='a'     # 等价于b='7'
c=eval(b)
c
7

repr()函数

描述
repr() 函数将对象转化为供解释器读取的形式。

语法
以下是 repr() 方法的语法:

repr(object)
参数
object – 对象。
返回值
返回一个对象的 string 格式。

可以简单理解为给object加引号
对于解释器只有加了引号的才知道是字符串。

obj='I love Python'
obj==eval(repr(obj))
True
s = 'RUNOOB'
repr(s)
"'RUNOOB'"
dict = {'runoob': 'runoob.com', 'google': 'google.com'};
repr(dict)
"{'google': 'google.com', 'runoob': 'runoob.com'}"
com = "'communism is good'"
print(type(com))  #<class 'str'>
print(com)   #'communism is good'
print(eval(com))  #communism is good
cap = '996 is antihuman'
print(repr(cap))  #'996 is antihuman'
print(eval(repr(cap))) #996 is antihuman
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值