Python 3.x 有没有办法通过python中的文件导入来引入列表和变量?

Python 3.x 有没有办法通过python中的文件导入来引入列表和变量?,python-3.x,Python 3.x,所以,标题可能看起来很模糊,所以我将在这里更详细地描述它。作为一个项目,我正在写一个以空间为主题的文本游戏,我遇到了各种各样的问题。我试图使用多个文件来简化一切,因此,假设我在文件1中有以下变量: player_health = 100 o2 = 100 这很好,它可以正常工作,但在我的第一个文件中,我有一个不断增长的check()函数可用(这样玩家可以看到游戏信息),所以我制作了另一个文件来处理循环。在第二个文件中,我有以下内容,例如: while True: if o2 == 0

所以,标题可能看起来很模糊,所以我将在这里更详细地描述它。作为一个项目,我正在写一个以空间为主题的文本游戏,我遇到了各种各样的问题。我试图使用多个文件来简化一切,因此,假设我在文件1中有以下变量:

player_health = 100

o2 = 100
这很好,它可以正常工作,但在我的第一个文件中,我有一个不断增长的check()函数可用(这样玩家可以看到游戏信息),所以我制作了另一个文件来处理循环。在第二个文件中,我有以下内容,例如:

while True:
    if o2 == 0:
        time.sleep(2)
        player_health = player_health -1
对于球员来说

 while True:
     if player_health = 0
     print(game_over)
现在,o2和玩家健康设置为100作为变量。游戏结束是我做的一根线,但目前这并不重要。比如说,我在文件1中定义了o2和player_health,当我导入文件2时,它们似乎不再工作了。记住While循环是在文件2中处理的。我可以把它全部放在一个文件中,但那样的话我就更难修复错误了。我这样做的原因是,我可以分别处理开始和循环以及实际的故事部分,并在我认为合适的情况下添加或删除循环,而无需筛选大量代码,就像我可能必须在单个文件中筛选一样

有很多源代码,所以我只发布文件1和文件2中的代码片段。如果您想查看这两个文件中的所有源代码,我可以以某种方式发布,但会有很多

将一段代码归档:

(This is at the beginning of file one, which is named VortexA)
o2 = 100
nitrogen = 100
ship_store = []
player_inv = [] #These Lists and variables handle levels of life support and storage.
air = [o2, nitrogen]
ship_weapons = []
currency = 5
power = 0
He_3  = 0 
ship_health = 0
player_health = 100
ship = False

(This is at the end of file one. Just adding it here)
print("Type start(game) to begin")
game = 1
def start(variable):
    if game == 1: # This starts the game. Don't want everything in one file.
        import vortexB
文件2(vortexB)片段

我已经使用上面的变量发布了一些循环,但是我将在这里发布我得到的错误

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
start(game)
File "C:\Users\Daniel\Desktop\Python Stuff\Python Game\vortexa.py", line 87,  in start
import vortexb
File "C:\Users\Daniel\Desktop\Python Stuff\Python Game\vortexb.py", line 25, in <module>
print(player_health)
NameError: name 'player_health' is not defined
功能。我试图通过使用单独的文件来处理循环和故事,使我的游戏保持简单,并且在出现问题时易于修复。。如果可能的话。如果不是的话,我会有一个乱七八糟的文件

我只想让第一个文件处理教程类型的东西,第二个句柄循环,第三个句柄游戏元素。我希望它的设置方式是,在教程中声明变量,然后循环生效,然后我希望实际的游戏开始。我觉得我错过了一些非常简单的事情,或者我想做的事情是不可能的。我强烈认为这与空气中储存的氧气和氮气有关,但这并不能真正解释球员的健康状况不能正常工作。如果它根本不起作用,我将看看是否有其他方法可以做到这一点,比如把它全部放在一个文件中


提前谢谢。感谢您的任何帮助。

老实说,听起来您需要帮助

至于这篇文章的标题,是的。可以从特定文件导入变量(列表、字符串、对象等)

如果您有一个文件
constants.py

class Player:
    health = 100
    power = 12
    # etc

    def __init__(self, name, power):
        self.name = name
        if power:
            self.power = power

    @property
    def is_ded(self):
        if self.health < 0:
            return True
        return False
from constants import Player

me = Player('Kris', 500)
mic = Player('A microphone', 0)

def do_battle(player1, player2):
    player1.health = player1.health - player2.power
    player2.health = player2.health - player1.power

do_battle(me, mic)

mic.is_ded
# >>>True
me.is_ded
# >>>False

这是Python内置的。祝贺你选择了最好的语言。

你真的尝试过导入它吗?发生了什么事?是的。在Vortexa的末尾,有一个import语句带您到Vortexb。我的问题是,变量似乎不是“持久的”;你做得不对。您需要从
Vortexa
导入,以访问在
Vortexb
中定义的变量。啊,首先我要导入Vortexb,然后导入Vortexa以从中获取变量?或者我应该创建一个包含变量的新文件,然后将其导入每个变量?第一个是循环导入。只需在
Vortexb
的开头导入Vortexa。但是,请注意,这似乎需要OOP(例如,
Ship
Player
类等)。
from constants import Player

me = Player('Kris', 500)
mic = Player('A microphone', 0)

def do_battle(player1, player2):
    player1.health = player1.health - player2.power
    player2.health = player2.health - player1.power

do_battle(me, mic)

mic.is_ded
# >>>True
me.is_ded
# >>>False