Python 如何将变量从一个函数调用到另一个函数?
注意:这是一个很长的问题。 我正在制作一个游戏来练习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 =
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下