代码之家  ›  专栏  ›  技术社区  ›  Bob

在shell中逐行运行Python脚本与原子运行Python脚本

  •  1
  • Bob  · 技术社区  · 7 年前

    谢天谢地,MicroPython包括一个 REPL公司

    我想使用这个特性在PC端单步执行,并在Python脚本中一行一行地发送。

    任何 python my_script.py ?

    3 回复  |  直到 7 年前
        1
  •  2
  •   Charles Duffy    7 年前

    在stdin上一次传递一行代码是一种 彻底地 不可接受的调试器替代方案。

    def foo():                            # 1
        for i in range(10):               # 2
            if i == 5:                    # 3
                raise Exception("Argh!")  # 4
                                          # 5
    foo()                                 # 6
    

    ...在适当的分步调试器中,用户可以这样使用它:

    break 4
    run
    

    for 循环:输入 对于

    _something = iter(range(10)); i=_something.next() ,也许?),然后,您需要模拟作用域的效果。这意味着你的语言与你所谓的“调试”语言截然不同。

        2
  •  1
  •   Dalen    7 年前

    我不知道MicroPython是否内置了compile()和exec()。 但是,当嵌入式Python拥有它们并且MCU有足够的RAM时,我会执行以下操作:

    1. 向嵌入的shell发送一行,开始创建具有多行字符串的变量。

      “\u代码=”“\”

    2. 用“”关闭多行字符串

    如果RAM很小,并且无法一次性传输整个代码,则应将其传输到将要执行的块中。比如函数、循环等。

    但能否将原始字节码注入shell并运行它取决于MicroPython与CPython的相似程度。

    是的,有区别。正如在另一个答案中所解释的那样,逐行执行可能很棘手。所以代码块是最好的选择。

        3
  •  0
  •   wim    7 年前

    差别

    .py 文件,但它是一个 SyntaxError 在交互式口译员中:

    x = 1
    if x == 1:
        pass
    x = 2