最近我刚开始使用python,现在我谈到了名称空间和范围的主题。为了进一步了解这个主题,I found this,其中包含一个程序,导致我的困惑
下面是程序:
1 def outer_function():
2 a = 20
3 def inner_function():
4 a = 30
5 print('a =',a)
6
7 inner_function()
8 print('a =',a)
10
11 a = 10
12 outer_function()
13 print('a =',a)
这是你肯定的结果,但我不确定
a = 30
a = 20
a = 10
但我心里的想法应该是
a = 30
a = 30
a = 20
a = 10
为了更清楚,我甚至修改了原始代码如下:
def outer_function():
a = 20
def inner_function():
a = 30
print('a1 =',a)
inner_function()
print('a2 =',a)
a = 10
outer_function()
print('a3 =',a)
但还是这样:
a1 = 30
a2 = 20
a3 = 10
所以,我认为应该有一个双a1 = 30
的原因是因为我相信代码中的line5
是
首先,它在line12
调用outer_function()
时运行,从line1
到line8
,并用a1 = 30
输出调用line5
第二,调用line7
,再次触发line5
,输出与上面相同
最后,函数outer_function()
在line8
完成时结束,也就是a2 = 20
出现的时候
然后回到“main thread”(我称之为“main thread”,因为这实际上并不是指它,或者它是?line13
并打印a3 = 10
所以,我得到的不是我想的,我对这个项目的理解有什么问题吗
谢谢你花时间阅读我的问题,如果你能帮我一把的话,那将对我有很大的帮助:)提前谢谢
我刚找到我的困惑所在!非常感谢那些帮助我的人。
我困惑的主要问题是我不稳定的编程知识基础。因此,我错误地认为line5
将在声明inner_function()
时运行。哈哈哈,怎么会这样??这就是刚刚发生的基本错误——函数的声明在程序中被调用之前永远不会运行!这就是为什么只有一个a = 30
无论如何,我会记住不要再犯同样的错误。我很感激那些帮助解决这个小的基本语法错误的人
干杯
inner_function
是在第3行声明的,但是只调用过一次,那是在第7行如果取出第7行,
a1
将永远不会打印相关问题 更多 >
编程相关推荐