【问题标题】:How to hot swap the current file in python如何在python中热交换当前文件
【发布时间】:2015-10-24 09:56:17
【问题描述】:

我正在尝试在 python 中热交换文件。我正在创建一个需要很长时间才能加载的游戏。但我不想每次都重新加载它。我正在尝试在程序运行时更改一些代码。 例如: 我想改变这个:

while True:
    print("Hello")

在运行时对此:

while True:
    print("Hello World")

我寻找 python 的热交换,所有这些都是我不想要的答案。所有其他答案都会更改模块。我想更改当前文件。就像eclipse中的java一样。请帮忙!

【问题讨论】:

  • 我不清楚您要做什么。你想改变一个已经加载的模块的代码吗? 当前 模块?您想以文本方式修改磁盘上的文件吗?您想在加载模块时动态重写代码吗?请edit your question 澄清。如果您解释您所看到的现有答案所说的内容,以及为什么它们对您不满意,那将会很有帮助。如果您告诉我们为什么您想这样做也会很有帮助。

标签: python hotswap


【解决方案1】:

我想更改当前文件。就像eclipse中的java。

当您在 Eclipse 中修改 Java 代码时,代码当前没有运行。实际上,Eclipse 有一个内置的 Java 编译器,它会在您键入代码时尝试编译您的代码。这就是 Eclipse 能够为您提供有关代码中的语法错误和类型错误的快速反馈的原因。但它无法为您提供有关代码运行时行为的任何信息(无论它是否产生正确的答案),因为它不运行代码!为此,您需要按下 运行 按钮。

所以我认为您真正想问的问题不是“我可以动态修改 Python 代码吗?” (答案是“是的,但它很复杂,有警告,不是一个好主意”)但是“是否存在 Python IDE 可以在我输入时给我有关语法错误的反馈?”答案是强调“是的!”。 this answer 中有一个非常全面的选项列表。

【讨论】:

  • 你能告诉我如何修改当前运行的代码吗?
  • 你为什么要这样做?这不是 Eclipse 的工作方式。
  • 你想写一个动态修改自己代码的Python程序吗?或者您想手动编辑文件?您似乎在暗示是后者,在这种情况下,我已经回答了您的问题。我很乐意为我的回答提供任何让您感到困惑的地方,但您首先必须告诉我您对什么感到困惑。
  • 在运行时手动编辑文件,然后立即获得结果
  • 我从未听说过任何允许这样做的编程语言。 原则上是不可能的:正在执行的代码有状态;如果您可以更改代码,则当前状态将无效。您必须停止执行代码以清除状态,然后重新加载文件。
【解决方案2】:

您可以使用exec 函数使用动态执行。 将要执行的代码存储在字符串中,并在运行时更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2018-08-17
    相关资源
    最近更新 更多