使用字符串从其他模块获取列表?

2024-10-04 09:30:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试从列表中随机获取字符串,然后使用从列表中产生的字符串来查找与来自不同模块的字符串同名的列表,以确定在战斗实例中敌人的统计信息

例如,我有一级敌人列表,可能类似于:

Lv1MonsterList = ["goblinlv1", "banditLv1", "elementalLv1"]

我有一个变量集,可以从列表中随机选择一个:

trueMonster = random.choice(Lv1MonsterList)

然后在另一个模块(globalvarDB)中,我为第一个列表中的每个字符串都有一个列表,其中包含了敌人的统计信息。例如:

goblinLv1 = [1,2,3,4,5]
banditLv1 = [1,2,3,4,5]
elementalLv1 = [1,2,3,4,5]

因此,我想使用trueMonster的值从另一个模块中的对应表中获取所有信息。这可能吗


Tags: 模块实例字符串信息列表randomchoice敌人
1条回答
网友
1楼 · 发布于 2024-10-04 09:30:28

是的,这是可能的。您需要非常简单地组织文件结构

让我们把你的“敌人名单”文件命名为enemylist.py。然后,您希望将enemylist.py放在与globalvarDB相同的目录中:

..
 > enemylist.py
 > globalvarDB.py

有了它,您现在可以在enemylist.py中执行以下操作:

from globalvarDB import goblinLv1, banditLv1, elementalLv1

Lv1MonsterList = [goblinlv1, banditLv1, elementalLv1]
trueMonster = random.choice(Lv1MonsterList) 

例如,现在goblinlv1将在调用它时解析为[1,2,3,4,5]。如果trueMonster现在设置为goblinlv1,那么它也将解析为[1,2,3,4,5]

请注意,这里不再处理字符串,而是直接引用所需的列表(这是一种很好的做法,因为它避免了一层混淆)


基本技术是完全相同的-一个简单的import语句将解决所有问题-但是还有其他方法来组织文件结构,例如

  • globalvarDB放在PYTHONPATH上,以便Python可以在系统的任何位置访问它

  • 将它放在自己的文件夹(比如utils)中,并在根目录中声明一个空的__init__.py文件,因此

    ..
     > enemylist.py
     > utils
         > globalvarDB.py
         > __init__.py
    

    在这种情况下,您希望在enemylist.py中执行from utils.globalvar import ...

相关问题 更多 >