我尝试在函数的局部范围内使用eval()。但是,它始终在全局范围内进行评估。
自包含的示例:
1-此代码有效:
var1 = 1
var2 = 2
var3 = 3
myDict = dict((name, eval(name)) for name in ["var1",
"var2",
"var3"])
print(myDict["var1"])
Run Code Online (Sandbox Code Playgroud)
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"])
Run Code Online (Sandbox Code Playgroud)
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"])
Run Code Online (Sandbox Code Playgroud) 我想合并两个分支,但是git认为没有冲突。所以我想以交互方式逐行合并两个分支,最好使用 emacs ediff,但是其他工具应该没问题。
我对 git 很陌生,所以请详细一点。
我遇到了如何在ClojureScript中比较两个JavaScript对象以实现深度相等的问题,因为(= var1 var2 var3 ...)仅适用于Clojure/ClojureScript集合和数字.
(= (js-obj "a" 1) (js-obj "a" 1)) ;; => false
Run Code Online (Sandbox Code Playgroud)
当我写这个问题时,我找到了解决方案......但我会问并回答它可能会帮助别人.
branch ×1
deepequals ×1
diff ×1
eval ×1
git ×1
git-branch ×1
interop ×1
javascript ×1
python ×1
scope ×1