0

我考虑将我的游戏的高分存储为代码本身的变量,而不是像我目前所做的那样存储为文本文件,因为这意味着运行它所需的额外文件更少,并且分配 999999 分变得更加困难。

但是,这将需要我运行自我修改代码来永久覆盖表示分数的全局变量。我对此进行了研究,并考虑到我想做的只是更改全局变量,我发现的所有东西都太高级了。

如果有人能给我解释一下如何编写自我修改的 Python 代码来做到一点,我将不胜感激,最好也提供一个示例,因为它有助于理解。

4

1 回答 1

2

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

  1. 您进行了错误修复并需要重新分发 - 如何合并通过自我修改存储的数据。
  2. 使用散列验证打包非常困难——一旦修改了本地版本,就很难判断它源自哪个版本,因为 SHA 不匹配。
  3. 这是不安全的 - 您可以只保存和加载一个未与您的包一起存储的 Python 类,但是,如果它是用户可写的,则外部进程可以将任意 Python 代码添加到该文件以进行评估。有点像 SQL 注入但 Python 风格。

Python 使得加载和转储 JSON 文件非常简单,对于简单的事情,我不会想到其他任何事情。即使是 CSV 文件也很简单,可以绑定到地图,但可以使用您最喜欢的电子表格编辑器更轻松地作为数据进行操作。

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

于 2014-12-16T17:24:44.937 回答