自我修改Python代码以跟踪高分

时间:2014-12-16 17:08:40

标签: python self-modifying

我考虑过将我的游戏的高分存储为代码本身的变量而不是我迄今为止所做的文本文件,因为这意味着运行它需要更少的额外文件归因于999999分变得更难。

但是,这需要我运行自修改代码来覆盖表示永久分数的全局变量。我调查了这一点,并考虑到我想要做的只是改变全局变量,我发现的所有东西都太先进了。

我很感激,如果有人可以给我一个关于如何编写自我修改的Python代码来解释只是的解释,最好还有一个例子,因为它有助于理解。

1 个答案:

答案 0 :(得分:2)

我的第一个倾向是说“不要那样做”。自修改Python(实际上是任何语言)使得维护版本化库非常困难。

  1. 您修复了错误并需要重新分发 - 如何合并您通过自我修改存储的数据。
  2. 使用哈希很难对包装进行身份验证 - 一旦修改了本地版本,就很难分辨出它来自哪个版本,因为SHA不匹配。
  3. 这是不安全的 - 您可以保存并加载未与您的软件包一起存储的Python类,但是,如果用户可写,则外部进程可以向该文件添加任意Python代码以进行评估。有点像SQL注入但是Python风格。
  4. Python使加载和转储JSON文件变得非常简单,对于简单的事情,我不会想到任何其他的东西。甚至CSV文件也很简单,可以绑定到地图,但可以使用您喜欢的电子表格编辑器更轻松地将其作为数据进行操作。

    我的建议 - 除非你只想进行实验,否则不要使用自我修改的Python;它不是现实世界中的实用解决方案,除非您在磁盘和内存非常重要的嵌入式环境中工作。