Python中的命名空间和范围

问题描述 投票:0回答:1

我已经遇到了一个关于Python中命名空间和范围的脚本,我无法弄清楚这个脚本是如何运行的,因为它混合使用了这两个概念。这是代码:

j, k = 1,2
def proc1():
       j, k = 3, 4
       print “ j == %d and k == %d” % (j, k)
       k = 5

def proc2():
       j = 6
       proc1()
       print “ j == %d and k == %d” %(j , k)

k = 7
proc1()
print “ j == %d and k == %d” % (j, k)

j = 8
proc2()
print “ j == %d and k == %d” % (j, k)

我估计这个脚本的输出应该只包含四个print表达式,但运行它时结果是5。此外,每行中j和k的值也与我的预期完全不同。有人可以解释这是怎么运行的吗

如果您还可以详细说明这些代码块中的命名空间和范围,我们将表示衷心的感谢。此外,这是从我的计算机运行它时的输出,当前它配备了Python 2.7.14。 output result] 1

python-2.7 scope namespaces
1个回答
0
投票

小轮廓解释你的变量如何生活

Scope and liveness

编辑:'我们可以重复使用j_1,因为之前的j_1而且这个从未在一起生活'实际上并不完全准确,因为在proc2中你称之为proc1,所以他们一起生活。所以蓝色j_1(j在proc2实际上是j_2。我改变了轮廓。

© www.soinside.com 2019 - 2024. All rights reserved.