Python 3.x 修改python函数中的变量

Python 3.x 修改python函数中的变量,python-3.x,Python 3.x,这里有一个非常非常简单的问题。如何通过函数修改变量?我问这个问题感到很傻。以下是我所拥有的: enemyHealth = 100 def Attack(): enemyHealth -= 10 显然,enemyHealth没有定义 我希望你不需要归还任何东西。我做错了什么?简短回答: enemyHealth = 100 def Attack(): global enemyHealth enemyHealth -= 10 一种方法是使其成为全球性的,但这是一个非常糟

这里有一个非常非常简单的问题。如何通过函数修改变量?我问这个问题感到很傻。以下是我所拥有的:

enemyHealth = 100

def Attack():
    enemyHealth -= 10
显然,enemyHealth没有定义

我希望你不需要归还任何东西。我做错了什么?

简短回答:

enemyHealth = 100

def Attack():
    global enemyHealth
    enemyHealth -= 10

一种方法是使其成为全球性的,但这是一个非常糟糕的迹象。这使得开发和调试函数变得困难,因为您需要了解全局状态才能这样做

避免这种情况的简单方法是传递值:

enemy_health = 100

def attack(health, power=10):
    return health - power

enemy_health = attack(enemy_health)

print(enemy_health)
但看起来您可以在这里使用OOP:

class Enemy:

    def __init__(self):
        self.health = 100

def attack(character, power=10):
    character.health -= power

enemy = Enemy() # create Enemy instance

attack(enemy) # attack it

print(enemy.health) # see the result

如果要在函数中修改变量,则需要声明变量
global
。看见但实际上,这很少是最好的解决方案——您更可能希望某个
敌人
类的实例,具有自己的
健康
属性供您修改。请参阅以获取解释/示例。如果我将来遇到麻烦,我可以使用它。目前,全局变量可以工作。