# -*- coding: utf-8 -*-
# @File : builtin-eval-example.py
# @Date : 2018-09-20
# @Author : Peng Shiyu
# eval 函数将一个字符串作为Python 表达式求值
print(eval("1+1")) # 2
print(eval("__import__('os').getcwd()"))
# /example
# Python 在求值前会检查这个字典, 如果没有发现名称为builtins 的变量(复数形式), 它就会添加一个
namespace = {}
print(eval("__import__('os').getcwd()", namespace))
print(namespace.keys()) # ['__builtins__']
# 如果这个变量存在, Python 就不会去添加默认的
namespace = {"__builtins__": {}}
print(eval("__import__('os').getcwd()", namespace))
# NameError: name '__import__' is not defined