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 に答える