擅长:python、mysql、java
<p>我假设你知道<a href="https://stackoverflow.com/a/1832957/843953">why <em>not</em> to use ^{<cd1>}</a>。但是,如果仍然希望这样做,可以将空dict传递给<code>globals</code>参数,并将dict传递给<code>eval()</code>的<code>locals</code>参数。例如:</p>
<pre><code>criteria_list = ['A < 5', 'B == 6', '3 < C < 4']
all_vars = {'A': 3, 'B': 6, 'C': 3.5, 'D': 5, 'E': 100}
crit_sum = 0
for crit in criteria_list:
if eval(crit, {}, all_vars):
crit_sum += 1
if crit_sum == len(criteria_list):
print("Success!")
</code></pre>
<p>或者,使用生成器表达式时:</p>
<pre><code>criteria_list = ['A < 5', 'B == 6', '3 < C < 4']
all_vars = {'A': 3, 'B': 6, 'C': 3.5, 'D': 5, 'E': 100}
if sum(eval(crit, {}, all_vars) for crit in criteria_list) == len(criteria_list):
print("Success!")
</code></pre>
<p>当表达式使用<code>all_vars</code>(例如<code>X == 100</code>)中不存在的变量时,您将得到一个<code>NameError: name 'X' is not defined</code>,如果愿意,可以捕获并处理该变量</p>