【发布时间】:2021-06-13 03:53:25
【问题描述】:
我是 Python 的初学者,我正在尝试通过制作一个简单的游戏来学习。我一开始将所有内容都放在一个大文件中(我们称之为main.py),但它已经到了拥有如此多的类和函数的地步,我想将这段代码拆分成更易于管理的组件。
我对 LaTeX 有一些经验(当然也不是专家),并且在 LaTeX 中有一个名为 \input 的函数,它允许将部分代码写入不同的文件中。例如,如果我有文件 main.tex 和 sub.tex 看起来像:
main.tex:
Some code here.
\input{sub}
Lastly, some other stuff.
和 sub.tex:
Some more code here
那么,当我执行main.tex时,它会执行:
Some code here.
Some more code here
Lastly, some other stuff.
我想知道,Python中是否有类似的东西?
注 1:据我所知,最常用的拆分代码的建议方法是使用模块。由于一些原因,我发现这有点不舒服,我将在下面列出(当然,我知道我觉得他们不舒服是因为我没有经验,而不是因为这是错误的做事方式)。 我觉得模块不舒服的原因:
-
我的
main.py文件导入了一些其他模块,例如 Pygame,这些模块需要导入到我创建的所有新模块中。如果出于某种原因我想在此过程的后期将一个新模块导入main.py,那么我需要在我创建的每个其他模块上导入它。 -
我的
main.py文件有一些在不同类中使用的全局变量;例如,我有一个全局变量CITY_SIZE,它控制屏幕上所有City实例的大小。当然,CITY_SIZE用于类City的定义中。如果我要将类City移动到模块classes.py,那么我还需要在classes.py上定义CITY_SIZE,如果我想更改CITY_SIZE的值,我需要更改classes.py的值也是如此。 -
再一次,假设我添加了一个
classes.py模块来存储我的所有类,例如City。然后在main.py我需要在我的代码中写classes.City而不是City。我知道这可以通过使用from classes import City来克服,但是每次我向classes.py添加一个新类时,我都需要添加一行代码。
注 2:我非常感谢任何关于如何在 Python 中舒适地使用模块的 cmets,但请注意,因为这不是我的问题,所以我无法接受这些作为有效答案(但是,再次感谢他们!)。
【问题讨论】:
-
这个想法是将大文件拆分成更小、更集中的代码块。每个文件中的代码应该密切相关。然后,当您阅读单个文件时,它们应该更容易理解,因为它们所做的工作更少。例如,您可以尝试将与演示有关的所有内容放在一个文件中,这样可以将事物在屏幕上的表示方式与游戏逻辑分开。