Python:跟踪 For 循环的执行

标签 python if-statement trace conditional-statements

我正在尝试跟踪一段代码的执行情况,该代码包含一个带有两个 if 条件for 循环。但我需要帮助准确理解 for 循环 在 python 中是如何执行的。

请考虑以下示例:

  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 行并运行它。请确认或更正我的想法。

谢谢

最佳答案

您对代码功能的理解是正确的。

FWIW,使用python -m trace --trace some_script.py很容易跟踪脚本的执行。或者您可以使用 python -m trace --count some_script.py 查看执行行数.

例如,后一个对 trace 的调用会产生:

    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')

关于Python:跟踪 For 循环的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8032484/

相关文章:

debugging - 如何在Erlang中使用trace和dbg来调试和跟踪我的程序?

c++ - 在 C++ 中验证日期格式

arrays - swift os x 数组二元运算符与 nil != if 语句比较错误

php - 简单的 PHP 问题 : Conditional CSS class based on user

c# - 为什么在 EventSource 方法上限制参数类型和计数

python - Pandas - 使用 .apply() 根据条件更新行中的值

python - 如何从列表中查找缺失的号码?

python - 楼层划分//vs int() 四舍五入

python - 使用 feedparser 访问重复的 feed 标签

c - 如何跟踪所有本地函数调用和退出,并将其记录到文件中以供查看