如何将值重新分配给作为函数参数传递的变量?
例如,我要做的是:
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()
有什么想法吗?
答案 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'