4

可能重复:
Python:如何通过引用传递变量?

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

例如,我想做的是:

foo = True

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

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

foo = convert(foo)

而我想做类似的事情:

convert(foo)

或者,

foo.convert()

有任何想法吗?

4

1 回答 1

7
foo = convert(foo)

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

foo.convert()

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

convert(foo) # actually, just convert()

也可以工作,但你必须在函数中使用global关键字。convert不建议这样做,尤其是当它很容易避免时。

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'
于 2012-12-07T21:19:26.140 回答