Q20。以下程序的执行顺序是什么?
def f1(x): #1
temp = x + 1 #2
return temp #3
def f2(y): #4
t = y -1 #5
v = f1(t) #6
return v #7
#8
print(f2(5)) #9
答案(选择一个):
a)1-2-3-4-5-6-7-9
b)1-4-9-4-5-6-1-2-3-6-7-9
c)1-2-3-4-5-6-7-9-4-5-6-6-7-
d)1-4-9-4-5-6-1-2-3-6
e)以上都不是
这里他们说答案是e(以上都不是),但我不确定python执行这些行的正确顺序是什么。我怎么知道每个不同的函数?
在您的代码中,有2 functions
,这些2 functions
在它将调用的时候运行,所以首先执行调用f2
函数的第9行,它将运行到#6
行,然后执行调用另一个函数f1
的f2
函数,现在f1
函数将开始执行到最后,直到f2
初始化v
,然后执行返回的7th
行最后它将打印声明。。!
您可以通过定义一个故意引入错误的函数来解决这里的关键点。例如,
def f(x):
return squirt
假设squirt
没有在全局范围内定义(在函数定义之外),调用此函数将导致错误
NameError: name 'squirt' is not defined
但是,请注意,使用def f(x)
定义函数是完全可以接受的。这意味着,当定义函数(def f(x)
)的行被执行时,函数的行不会以任何方式被执行。
只有当函数被调用时,函数的行才会被执行(而不重新执行定义)。
另一点,当该行包含对另一个函数的调用时(例如,第6行),询问该行何时执行似乎有些模糊。但是,在计算赋值表达式右侧的值之前,第6行中包含的赋值实际上无法进行。所以你可以说第6行-一个赋值-是在执行第2行和第3行之后执行的。同样地,在对f2
的调用被解析之前,线路#9不能被执行。
把这些要点放在一起,再加上Python代码是从上到下读取的,答案就是
1-4-5-2-3-6-7-9