是否可以在单独的函数中使用在一个函数中创建的列表?
我已在此功能中创建了光盘列表:
def create_discs():
disc_list=['disc0', 'disc1', 'disc2']
然后我想在另一个函数中使用这个列表
def move_discs
cmds.move(disc_list[1], 0, 0, 5)
尝试这样做时出现此错误:
NameError: file <maya console> line 48: global name 'disc_list' is not defined #
我正在使用Autodesk Maya
答案 0 :(得分:1)
您只需要在第一个函数中返回该列表:
>>> def create_discs(): disc_list=['disc0', 'disc1', 'disc2'] return disc_list >>> def move_discs(): l = create_discs() print(l) >>> move_discs() ['disc0', 'disc1', 'disc2']
答案 1 :(得分:0)
你可以让第一个函数返回想要的列表,然后在任何你喜欢的地方使用它:
def create_discs():
disc_list = ['disc0', 'disc1', 'disc2']
return disc_list
def move_discs():
disc_list = create_discs()
cmds.move(disc_list[1], 0, 0, 5)
希望这会有所帮助。
答案 2 :(得分:0)
如果您不想使用Classes来维护状态,那么您可能希望拥有global
变量,或者可以从create_list()
返回列表。
使用全局变量:
disc_list = []
def create_list():
global disc_list
disc_list = ['disc0', 'disc1', 'disc2']
def move_discs
cmds.move(disc_list[1], 0, 0, 5)
请注意,不鼓励使用全局变量。
从create_list()
返回列表:
def create_list():
return ['disc0', 'disc1', 'disc2']
def move_discs():
disc_list = create_list()
cmds.move(disc_list[1], 0, 0, 5)
但是我认为这对你没什么帮助,因为你可能需要在整个程序中保持列表的状态。
答案 3 :(得分:0)
有几种方法可以做你想做的事。
如果您只想使用create_discs
创建列表一次,以便在move_discs
中使用它,您可以修改create_discs
以返回它创建的列表,然后调用{ {1}}中的{1}}:
create_discs
如果您希望保存已创建的列表以便可以在整个程序中使用它,您可以再次让move_discs
返回其列表,并将其保存到变量中。然后可以通过def create_discs():
return ['disc0', 'disc1', 'disc2']
def move_discs():
cmds.move(create_discs()[1], 0, 0, 5)
move_discs()
或任何其他函数访问此变量:
create_discs
我不确定你是否已经研究过函数参数,但它们是支持你试图实现的行为的函数的一个特性:
moved_discs
答案 4 :(得分:0)
列表是自己的持久对象。如果从一个函数返回列表,则可以在其他函数中操作它:
def get_list():
return [1,2,3,4]
def remove_last_item( the_list):
the_list.remove(the_list[-1]) # remove the last entry
def insert_something(the_list, item):
the_list.insert(item, 0)
my_list = get_list()
print my_list
# [1,2,3,4]
remove_last_item(my_list)
print my_list
# [1,2,3]
insert_something(my_list, 0)
print my_list
# [0,1,2,3]