在Function python中重置全局数组中的值

时间:2012-04-02 03:00:15

标签: python arrays global-variables reset

我在python和....编码。

我有一个简单的问题。我试图通过调用某个函数重置全局数组的值但是有困难。这是我目前的代码:

CHOICES = (('1', 'First'), ('2', 'Second'))

def set_choices():
    global CHOICES
    CHOICES = (('3', 'Third'), ('4', 'Fourth'))

基本上我想做的是通过从其他函数调用函数来重置数组CHOICES。有没有办法做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:4)

myObject = [('1', 'First'), ('2', 'Second')] 
CHOICES = set(myObject)

def set_choices():
    global CHOICES
    CHOICES.clear() # Remove the element from set CHOICES
    # Do some of your changes here
    anotherObject = [('3', 'Third'), ('4', 'Fourth')]
    CHOICES[:] = set(anotherObject)


print(CHOICES) # Before calling set_choices
set_choices()
print(CHOICES) # After you calling set_choices

我认为这会奏效。但是我不知道使用set和tuple是不是一个好主意,我个人会建议你使用列表列表代替。有没有特别的理由使用集合而不是其他选项?

输出:

{('2', 'Second'), ('1', 'First')}
{('4', 'Fourth'), ('3', 'Third')}

回复您的评论以使用列表:

CHOICES = [['1', 'First'], ['2', 'Second']]

def set_choices():
    # Changed since the comment of another member aaronasterling
    # Removed the use of global
    CHOICES[:] = [['3', 'Third'], ['4', 'Fourth']]

print(CHOICES)
set_choices()
print(CHOICES)

输出:

[['1', 'First'], ['2', 'Second']]
[['3', 'Third'], ['4', 'Fourth']]

要详细了解切片分配,请查看此SO question & answer

答案 1 :(得分:1)

如果您想使用列表执行此操作,则无需使用global关键字。

CHOICES = [('1', 'First'), ('2', 'Second')

def set_choices():
    CHOICES[:] = (('3', 'Third'), ('4', 'Fourth'))

这将替换列表的内容而不更改引用。它通过切片分配工作。 CHOICES[:]引用整个列表的一部分。