Tie*_*dil 7 python printing import eval built-in
代码:
#!/usr/bin/python
src = """
print '!!!'
import os
"""
obj = compile(src, '', 'exec')
eval(obj, {'__builtins__': False})
Run Code Online (Sandbox Code Playgroud)
我得到输出:
!!!
Traceback (most recent call last):
File "./test.py", line 9, in <module>
eval(obj, {'__builtins__': False})
File "", line 3, in <module>
ImportError: __import__ not found
Run Code Online (Sandbox Code Playgroud)
'print'和'import'都是语言结构.为什么'eval'限制使用'import'但不限制'print'?
PS我正在使用python 2.6
更新:问题不是"为什么导入不起作用?" 但"为什么印刷工作?" 是否有一些架构限制或其他?
该__import__
方法由import
关键字: python.org调用
如果您希望能够导入模块,则需要将__import__
方法保留在内置函数中:
src = """
print '!!!'
import os
"""
obj = compile(src, '', 'exec')
eval(obj, {'__builtins__': {'__import__':__builtins__.__import__}})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3354 次 |
最近记录: |