Skip to content

Latest commit

 

History

History
179 lines (133 loc) · 3.61 KB

063-989031-pdb3_调试多个文件_debug_设置文件中的断点.sy.md

File metadata and controls

179 lines (133 loc) · 3.61 KB
show version enable_checker
step
1.0
true

调试多个文件

回忆上次内容

  • 上次了解了 try 的完全体
    • try
      • 尝试运行
    • except
      • 发现异常时运行的代码块
    • else
      • 没有发现异常时运行的代码块
    • finally
      • 无论是否发现异常最终都要运行的代码块

图片描述

  • 这几个py文件可以进行调试吗?

观察结构

cd fruits
  • 首先进入fruits目录

图片描述

将输入拆分成两块

图片描述

  • 代码如下
a = input("How many apples do you have?\n")
try:
    a = int(a)
    print("You got " + str(a) + " apples!")
except ValueError:
    print("\33[41meerror\33[0m ", a, "NaN")
    quit()
b = input("How many bananas do you have?\n")
try:
    b = int(b)
    print("You got " + str(b) + " bananas!")
except ValueError:
    print("\33[41meerrpr\33[0m ", b, "NaN")
    quit()

修改文件

  • 首先
    • 在变量名上想办法
  • 名字
    • 本身就有某些含义
    • 具有某些可读性
  • 可以把
    • a 换成 apple
      • :1,4s/a/apple/gc
      • 过程中需要用Y/n进行确认

图片描述

再替换

  • b 换成 banana
    • :8,$s/b/banana/gc

图片描述

  • 变量名 变长
    • 并不会让 程序变慢
  • 只是 换个 指向同一盒子空间的名字 而已
  • process中的a和b也要进行修改

文件

  • main.py
import get_fruits
import process
import output
  • get_fruits.py
apple = input("How many apples do you have?\n")
try:
    apple = int(apple)
    print("You got " + str(apple) + " apples!")
except ValueError:
    print("\33[41meerror\33[0m ", a, "NaN")
    quit()
banana = input("How many bananas do you have?\n")
try:
    banana = int(banana)
    print("You got " + str(banana) + " bananas!")
except ValueError:
    print("\33[41meerrpr\33[0m ", banana, "NaN")
    quit()
  • process.py
try:
    from get_fruits import apple,banana
    total = apple + banana
except:
    print("\33[41merror\33[0m",end="")
    print("your input is invalid!")
    quit()
  • output.py
try:
    from process import total
    print("You got " + str(total) + " fruits!")
except:
    print("\33[41merror\33[0m",end="")
    print("your input is invalid!")
    quit()

开始调试

  • 在主控函数中
    • 一路next
      • 就会直接跳过调试子模块的过程

图片描述

  • 可以在子模块文件中设置断点吗?

观察帮助

图片描述

  • 可以试试

设置断点

  • 在get_fruits.py第一行设置断点

图片描述

  • 确实可以跳转到子模块中
  • 可以设置到process中吗?

在process中设置断点

图片描述

总结

  • 我们这次尝试着调试了多个文件
    • 可以在指定文件位置设置断点
      • 然后再用continue直接跳过去

图片描述

  • 发现导入部分
    • 可以再分为两个子模块
    • 一个输入 a
    • 一个输入 b
  • 可以再拆分么?🤔
  • 我们下次再说!👋