为何Python代码执行时从main()跳转到is_even(n)函数?
CS50P奇偶性代码执行流程解惑
我正在YouTube学习CS50P课程里的条件语句奇偶性内容,为了更好理解代码做了可视化分析,但搞不懂代码执行的第二步为什么会从main()跳转到is_even(n)函数。
代码示例
1 def main(): 2 x = int(input("whats the value of x? ")) 3 if is_even(x): 4 print("even") 5 else: 6 print("odd") 7 8 def is_even(n): 9 if n % 2 == 0: 10 return True 11 else: 12 return False 13 14 main()
可视化流程截图

原因解释
程序执行的起点是第14行的main()调用,所以先进入main函数执行:
- 先执行第2行,获取用户输入并转成整数赋值给
x; - 到第3行
if is_even(x):时,if需要判断条件的真假,而is_even(x)是函数调用——Python必须先执行这个函数拿到返回值,才能知道条件是否成立。所以此时会暂停main函数的执行,跳转到is_even函数,把x的值传给参数n,执行里面的奇偶判断逻辑,返回True或False; - 等
is_even函数执行完毕返回结果后,程序才回到main函数的第3行,根据返回值决定走print("even")还是print("odd")分支。
内容的提问来源于stack exchange,提问作者user14951994
相关产品推荐
相关产品推荐

