Python中的命名空间和范围

时间:2017-12-18 08:44:12

标签: python-2.7 scope namespaces

我遇到了一个关于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

1 个答案:

答案 0 :(得分:0)

解释变量如何生活的小纲要

Scope and liveness

编辑:部分'我们可以重复使用j_1,因为之前的j_1和这个从不住在一起'实际上并不完全准确,因为在proc2中你打电话给proc1所以他们确实住在一起。所以蓝色j_1proc2中的j实际上是j_2。我更改了大纲。