Python: 跟踪for循环的执行
我正在尝试跟踪一段代码的执行过程,这段代码里有一个for循环
和两个if条件
。不过我对Python中for循环
的执行方式有点困惑。
请看下面这个例子:
numAs = 0
numEs = 0
aStr1 = 'abcdefge'
def someFunc(aString):
1. for i in range(len(aString)):
2. if s[i] == 'a':
3. numAs += 1
4. continue
5. if s[i] == 'e':
6. numEs += 1
7. if numEs > numAs:
8. break
9. print(someFunc(aStr1))
问题:使用aStr
作为参数,上面的代码中第1行会执行多少次?
我的理解是,这段代码的第1行:for i in range(len(aString))
,只会执行一次。而第2行和第5行会根据传入的字符串执行多次。当函数遇到continue
语句时,它会回到第2行继续执行。请确认或纠正我的想法。
谢谢
1 个回答
3
你对代码的理解是正确的。
顺便说一下,使用 python -m trace --trace some_script.py
可以很容易地跟踪一个脚本的执行过程,或者你也可以用 python -m trace --count some_script.py
来查看执行的行数。
比如,后者的调用会产生:
1: def someFunc(aString):
global numAs, numEs
1: s = aString
10: for i in range(len(aString)):
9: if s[i] == 'a':
2: numAs += 1
2: continue
7: if s[i] == 'e':
1: numEs += 1
1: if numEs > numAs:
break
1: numAs = 0
1: numEs = 0
1: someFunc('flammable')