我在 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)
我认为这个脚本的输出应该只包含四个打印表达式,但运行它时结果是五个。此外,每一行的 j 和 k 的值也与我预期的相差很大。有人可以解释这是如何运行的吗?
如果您还可以详细说明这些代码块中的命名空间和作用域,我们将不胜感激。此外,这是我从当前配备 Python 2.7.14 的计算机上运行它时的输出。
output result ] 1
最佳答案
解释变量如何生存的小轮廓
编辑:“我们可以重用 j_1 因为以前的 j_1 和这个永远不会在一起”的部分实际上并不完全准确,因为在 proc2
中您调用 proc1
所以他们确实住在一起。好蓝j_1
(j 在 proc2
实际上是 j_2
。我改变了轮廓。
关于python-2.7 - Python 中的命名空间和作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47864751/