我尝试在函数的局部范围内使用eval()。但是,它始终在全局范围内进行评估。
自包含的示例:
1-此代码有效:
var1 = 1
var2 = 2
var3 = 3
myDict = dict((name, eval(name)) for name in ["var1",
"var2",
"var3"])
print(myDict["var1"])
2-抛出NameError
为lvar1
def test1():
lvar1 = 1
lvar2 = 2
lvar3 = 3
myDict = dict((name, eval(name)) for name in ["lvar1",
"lvar2",
"lvar3"])
print(myDict["lvar1"])
3-与2相同的结果。
def test2():
lvar1 = 1
lvar2 = 2
lvar3 = 3
myDict = dict((name, eval(name), locals()) for name in ["lvar1",
"lvar2",
"lvar3"])
print(myDict["lvar1"])
保存locals()
(或vars()
)调用的结果以返回函数的本地范围。否则,locals()
在生成器表达式内部将返回gen-expr的本地范围。
def test3():
lvar1 = 1
lvar2 = 2
lvar3 = 3
scope = locals()
myDict = dict((name, eval(name, scope)) for name in [
"lvar1", "lvar2", "lvar3"])
print(myDict["lvar1"])
顺便说一句,您不需要明确的理解即可构建该命令:
# copy() avoids quirky, unexpected updates if something else (like a debugger)
# accesses locals() or f_locals
myDict = locals().copy() # or vars().copy()
问题内容: 此代码有效: 这两个测试用例基本相同。但是用这样的数组构造一个字符串很麻烦,而且您无法获得静态分析。所以我当时想做的是这样的: 其中孤立的是一个类似于以下内容的辅助函数: 最大的问题是Function.prototype.toString()给您整个功能。有谁知道从函数的字符串表示形式获取函数体的好方法? 更新:PRoberts在问这是什么目的,目的很简单: 问题答案: 我写了一个版本
我试过这个: 但这扩展了弦中的基因,这不是我想要的。
问题内容: 我想将数字限制在一定范围内。目前,我正在执行以下操作: 这样可以将其保留在和中,但看起来不太好。我怎样才能做得更好? PS:仅供参考,我正在使用Python 2.6。 问题答案: def clamp(n, minn, maxn): return max(min(maxn, n), minn) 或功能等效: 现在,您使用: 或者说得很清楚: 更清晰:
问题内容: 如何从其父范围调用在子范围中定义的方法? http://jsfiddle.net/wUPdW/ 问题答案: 您可以从父母到孩子使用: 工作jsfiddle:http : //jsfiddle.net/wUPdW/2/ 更新 :还有另一个版本,耦合性更低,更易于测试: jsfiddle:http : //jsfiddle.net/uypo360u/
我有一份文件来验证标签 我必须使用单元测试为它编写一个测试用例。测试用例将检查如果用户输入在1和99之间,它将通过。否则,如果超出范围,例如或,则失败。我写了一个测试类 但我觉得我没有走上正轨。是否有任何方法可以断言在1到99之间? 感谢您的帮助。
我习惯于做出反应并执行以使我的应用程序在本地运行。但是,当我在新项目上运行该脚本时,它会提示没有开始脚本。经进一步检查,没有。 如果这是我的的样子,我如何让它在本地运行? 这是一个Laravel环境,后端使用PHP,前端使用Vue。我觉得自己真的很愚蠢,因为我不知道这一点,但当我搜索时,我也没有找到任何东西。 我正在使用PhpStorm,我下载了XAMPP、Composer和PHP。我不确定我错过