Python 如何将变量从一个函数调用到另一个函数?

Python 如何将变量从一个函数调用到另一个函数?,python,function,import,Python,Function,Import,注意:这是一个很长的问题。 我正在制作一个游戏来练习python。我需要从另一个函数(我称之为spawn())中获取一个变量,并在另一个函数(我称之为damage\u take())中使用 这是文件敌方.py。它的主要任务是产生一个敌人: import random import player class Enemy(object): def types(self): type = ["slime", "ghost", "demon"] enemy =

注意:这是一个很长的问题。

我正在制作一个游戏来练习python。我需要从另一个函数(我称之为
spawn()
)中获取一个变量,并在另一个函数(我称之为
damage\u take()
)中使用

这是文件
敌方.py
。它的主要任务是产生一个敌人:

import random
import player

class Enemy(object):

    def types(self):
        type = ["slime", "ghost", "demon"]
        enemy = random.choice(type)
        return enemy


class Slime(Enemy):

    def types(self):
        colour = ["red", "green", "blue"]
        type = random.choice(colour)
        return type

    def health(self):
        health = random.randint(1,5)
        return health


class Ghost(Enemy):

    def types(self):
        form = ["spirit", "spectre", "phantom"]
        type = random.choice(form)
        return type

    def health(self):
        health = random.randint(10,30)
        return health


class Demon(Enemy):

    def types(self):
        being = ["demon", "hell hound", "wendigo"]
        type = random.choice(being)
        return type

    def health(self):
        health = random.randint(15,35)
        return health
这是重要的代码。我需要从这个函数中获取变量
health
,并在另一个函数中使用它

def spawn():
    enemy = Enemy()
    bad = enemy.types()

    if bad == "slime":
        slime = Slime()
        target = slime.types()
        health = slime.health()
        print(f"A {target} {bad} has appeared. It has {health} HP")
        return health
    elif bad == "ghost":
        ghost = Ghost()
        target = ghost.types()
        health = ghost.health()
        print(f"A {target} has appeared. It has {health} HP")
        return health
    elif bad == "demon":
        demon = Demon()
        target = demon.types()
        health = demon.health()
        print(f"A {target} has appeared. It has {health} HP")
        return health
def damage_taken():
    spawn()
    health = spawn.health - player.fight()
    return health

damage_taken()
这就是我正在努力的地方。我试图从函数
spawn()
中获取变量
health
,并在下面的函数中使用它。然而,它不断地告诉我健康是不存在的。如何从另一个函数中获取变量并在该函数中使用它

def spawn():
    enemy = Enemy()
    bad = enemy.types()

    if bad == "slime":
        slime = Slime()
        target = slime.types()
        health = slime.health()
        print(f"A {target} {bad} has appeared. It has {health} HP")
        return health
    elif bad == "ghost":
        ghost = Ghost()
        target = ghost.types()
        health = ghost.health()
        print(f"A {target} has appeared. It has {health} HP")
        return health
    elif bad == "demon":
        demon = Demon()
        target = demon.types()
        health = demon.health()
        print(f"A {target} has appeared. It has {health} HP")
        return health
def damage_taken():
    spawn()
    health = spawn.health - player.fight()
    return health

damage_taken()
代码

spawn.health
尝试将变量调用到函数中失败

def spawn():
    enemy = Enemy()
    bad = enemy.types()

    if bad == "slime":
        slime = Slime()
        target = slime.types()
        health = slime.health()
        print(f"A {target} {bad} has appeared. It has {health} HP")
        return health
    elif bad == "ghost":
        ghost = Ghost()
        target = ghost.types()
        health = ghost.health()
        print(f"A {target} has appeared. It has {health} HP")
        return health
    elif bad == "demon":
        demon = Demon()
        target = demon.types()
        health = demon.health()
        print(f"A {target} has appeared. It has {health} HP")
        return health
def damage_taken():
    spawn()
    health = spawn.health - player.fight()
    return health

damage_taken()
守则:

player.fight()

正在从另一个名为
player.py
的文件调用函数。它的主要目的是处理与玩家相关的机制,例如创建角色和决定他们造成的伤害。

如果我完全理解你的问题,你只需要将spawn函数的返回值指定到一个变量中:

def damage_taken():
    spawn_health = spawn()
    health = spawn_health - player.fight()
    return health

我猜您实际上更希望使用
生成
函数返回敌人的对象,而不是敌人的
健康
,因此我建议如下:

def spawn():
    enemy = Enemy()
    bad = enemy.types()

    if bad == "slime":
        enemy = Slime()  # each of these now is assigned to the same variable name, "enemy"
        target = slime.types()
        health = slime.health()
        print(f"A {target} {bad} has appeared. It has {health} HP")
    elif bad == "ghost":
        enemy = Ghost()
        target = ghost.types()
        health = ghost.health()
        print(f"A {target} has appeared. It has {health} HP")
    elif bad == "demon":
        enemy = Demon()
        target = demon.types()
        health = demon.health()
        print(f"A {target} has appeared. It has {health} HP")

    return enemy

def damage_taken():
    enemy = spawn()
    health = enemy.health - player.fight()
    return health
damage_taken()

现在,仍然存在一个问题,即在调用
damage\u take()
后,敌人的物体将完全掉落。如果你想让敌人继续存在,你可能需要在
受到的伤害
功能范围之外初始化玩家和敌人。更像这样:

enemy = spawn()
damage_taken(enemy)

你真正的问题是什么还不清楚。将其简化为。当
spawn
是一个函数时,
spawn.health
意味着什么?在文件敌方.py中,将其放入damage_take函数?@Hameda169非常清楚他的意思是能够访问spawn()下的生命值,只需调用spawn()并将其返回值存储在variable下