如何在 python 的局部变量中存储全局变量名称



所以我正在尝试创建一个函数,让我简单地调用该函数,我给它 10 个值和一个变量,它会将该变量随机更改为提供的值之一。

import random
place = "NA"
def randomize (value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, variable):
global variable
variable  = random.choice([value1, value2, value3, value4, value5, value6, value7, value8, value9, value10])
randomize ("Dungeon", "Plains", "Castle", "Prison", "Tavern", "Armory", "Docks", "Warehouse", "ThroneRoom", "Bedroom", place)
print place

然而,这告诉我以下内容:

SyntaxError: name 'variable' is local and global

在 Python 中,通常不会修改输入参数。我知道这在 C 中是标准的,但是返回值并将变量分配给函数的输出更容易:

import random
def randomize(*values):
    return random.choice(values)
place = "NA"
print place
place = randomize("Dungeon", "Plains", "Castle", "Prison", "Tavern", "Armory", "Docks", "Warehouse", "ThroneRoom", "Bedroom")
print place

对于1, 2, 3, ... n值,您应该使用列表。您还需要编写更少的代码,以便更好地扩展。你应该尽量避免全局变量...您可以在全球互联网上找到的原因。对于此示例,您甚至可以保存方法定义。

import random
places = ["Dungeon", "Plains", "Castle", "Prison", "Tavern", "Armory", "Docks",
          "Warehouse", "ThroneRoom", "Bedroom"]  # list with n elements...
place = random.choice(places)
print place

最新更新