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