Python:将值重新赋值给变量(使用函数)

时间:2012-12-07 21:16:07

标签: python function variables python-2.7

  

可能重复:
  Python: How do I pass a variable by reference?

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

例如,我要做的是:

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()

有什么想法吗?

1 个答案:

答案 0 :(得分: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'