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

BFT*_*FTM 4 python variables function python-2.7

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

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

例如,我要做的是:

foo = True

def convert(foo):
    if foo == True:
        foo = 'on'
    elif foo == False:
        foo = 'off'
    return foo
Run Code Online (Sandbox Code Playgroud)

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

foo = convert(foo)
Run Code Online (Sandbox Code Playgroud)

而我希望做的事情如下:

convert(foo)
Run Code Online (Sandbox Code Playgroud)

要么,

foo.convert()
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Lev*_*sky 7

foo = convert(foo)
Run Code Online (Sandbox Code Playgroud)

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

foo.convert()
Run Code Online (Sandbox Code Playgroud)

您可以在需要定义的类的实例上执行某些操作.你可以做到,但这不值得麻烦.只需重新分配变量即可.

convert(foo) # actually, just convert()
Run Code Online (Sandbox Code Playgroud)

也可以工作,但你必须globalconvert函数中使用关键字.不建议这样做,特别是当它很容易避免时.

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'
Run Code Online (Sandbox Code Playgroud)

  • 甚至根本不可能做我们正在谈论的事情.虽然考虑到了一个非常糟糕的想法,但我并不是特别倾向于试图解决这个问题.;) (2认同)