python:将值重新分配给变量(使用函数)

Python: Reassign value to variable (using a function)

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Python: How do I pass a variable by reference?

如何将值重新分配给作为函数参数传递的变量?

例如,我想做的是:

1
2
3
4
5
6
7
8
foo = True

def convert(foo):
    if foo == True:
        foo = 'on'
    elif foo == False:
        foo = 'off'
    return foo

其中foo现在是一个字符串。上述方法的问题在于,要将foo从布尔类型更改为字符串类型,必须传递以下内容:

1
foo = convert(foo)

然而,我想做的事情是:

1
convert(foo)

或者,

1
foo.convert()

有什么想法吗?


1
foo = convert(foo)

是实现这一目标最干净、最明确的方法。如果您确定需要将字符串重新分配给bool变量,那么大多数人都会推荐这种方法。

1
foo.convert()

是您可以在需要定义的类实例上执行的操作。你能做到,但这不值得麻烦。只需重新分配变量,就可以了。

1
convert(foo) # actually, just convert()

也可以,但是您必须在convert函数中使用global关键字。这是不推荐的,尤其是在很容易避免的情况下。

1
2
3
4
5
6
7
8
9
10
11
In [1]: foo = True

In [2]: def convert():
   ...:    global foo
   ...:    foo = 'on' if foo else 'off'
   ...:    

In [3]: convert()

In [4]: foo
Out[4]: 'on'