gpt4 book ai didi

python-3.x - Julia UndefVarError

转载 作者:行者123 更新时间:2023-12-01 10:21:40 27 4
gpt4 key购买 nike

for i in 1:2
if i == 2
print(x)
end
if i == 1
x = 0
end
end

UndefVarError : x not defined

为什么代码给出错误而不是在 julia 中打印 0?

而在 python 中,以下代码打印 0?

for i in range(2):
if i==1:
print(x)
if i==0:
x=0

最佳答案

原因是因为在循环中,每次执行循环时,变量都会获得一个新的绑定(bind),参见 https://docs.julialang.org/en/latest/manual/variables-and-scoping/#For-Loops-and-Comprehensions-1 .

事实上 while 循环在 Julia 0.6.3 和 Julia 0.7 之间改变了这种行为(在 Julia 0.6.3 中没有创建新的绑定(bind))。因此下面的代码:

function f()
i=0
while i < 2
i+=1
if i == 2
print(x)
end
if i == 1
x = 0
end
end
end

给出以下输出。

Julia 0.6.3

julia> function f()
i=0
while i < 2
i+=1
if i == 2
print(x)
end
if i == 1
x = 0
end
end
end
f (generic function with 1 method)

julia> f()
0

Julia 0.7.0

julia> function f()
i=0
while i < 2
i+=1
if i == 2
print(x)
end
if i == 1
x = 0
end
end
end
f (generic function with 1 method)

julia> f()
ERROR: UndefVarError: x not defined
Stacktrace:
[1] f() at .\REPL[2]:6
[2] top-level scope

For-loop 在每次迭代时都在 Julia 0.6.3 中创建了一个新绑定(bind),因此它在 Julia 0.6.3 和 Julia 0.7.0 下都失败了。

编辑:我已经将示例包装在一个函数中,但是如果您在全局范围内执行 while 循环,您会得到相同的结果。

关于python-3.x - Julia UndefVarError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50912829/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com