一、
eval
将字符串转换成有效的Python表达式
eval
(expression[,
globals
[,
locals
]])
(一)expression的一个表达式,可以是:‘
1
+
1
’,‘wang’(需定义),‘x
+
1
’(x需定义)
例
1
:
print
eval
(
'2+2'
)、
例
2
:
w
=
"zhejiang"
print
eval
(
'w'
)
例
3
:
x
=
1
y
=
2
print
eval
(
'x+1,y**3'
)
(二)
globals
是一个字典:
globals
=
{
'x'
:
3
,
'y'
:
3
}
globals
=
{
'x'
:
3
,
'y'
:
3
}
print
eval
(
'x+1,y**3'
,
globals
)
(三)
locals
是一个映射:所谓映射,就是引用的对象有具体值,取所引用对象的值。
x
=
1
y
=
2
print
eval
(
'x+1,y**3'
,
locals
())
二、
exec
,将一个字符串编译成字符形式,并执行该表达式
例
1
:
exec
(
'print "i am good"'
)
例
2
:
globals
=
{
'x'
:
3
,
'y'
:
3
}
exec
(
'print x+2+y*3'
)
in
globals
三、
execfile
,执行一个文件
execfile
(filename[,
globals
[,
locals
]])
(一)
execfile
(r
'C:\Documents and Settings\Administrator\b.py'
)
文件b.py中的内容:
print
eval
(
'2+1'
),运行结果是:
3
(window下用原始字符串,所以加r)
(二)
globals
=
{
'x'
:
3
,
'y'
:
3
}
execfile
(r
'C:\Documents and Settings\Administrator\b.py'
,
globals
)
文件b.py中的内容:
print
eval
(
'x+y'
),运行结果是:
6
(三)
x
=
1
y
=
2
execfile
(r
'C:\Documents and Settings\Administrator\b.py'
,
locals
())
文件b.py中的内容:
print
eval
(
'x+y'
),运行结果是:
3
四、
compile
编译字符串或一个文件
compile
(source,filename,mode)
source就是一个字符串
filename就是一个文件(地址)
mode分
eval
和
exec
两个
例
1
:
print
compile
(
'print "i am good"'
,'
','
exec
')
运行结果:<code
object
<module> at
00ABCD10
,
file
"", line
1
>
例
2
:
eval
(
compile
(
'print "i am good"'
,'
','
exec
'))
运行结果:i am good
例
3
:
exec
(
compile
(
'print "i am good"'
,'
','
exec
'))
运行结果:i am good
例
4
:w
=
"zhejiang"
print
eval
(
compile
(
'w'
,'
','
eval
'))
运行结果:zhejiang
联系客服