エラーは次のとおりです。
v.set(str(var = var - dictionary[number]))
インタプリタが計算することを期待していると思いますvar - dictionary[number]
; その値をに割り当てますvar
。次に、long の値を最初の引数として関数var
に渡します。str()
その最初の部分は実際に機能します - インタプリタは計算を行いますvar - dictionary[number]
。ただし、その値を に入れる代わりに、その値をという名前の引数として関数var
に渡します。文字列関数は という名前の引数を期待していないため、見たエラーが発生します。str
var
var
これが実際に動作していることを示す簡単な iPython インタープリター セッションを次に示します。
In [1]: def func1(var):
...: print var
...:
In [2]: def func2(notvar):
...: print notvar
...:
In [3]: var=12
In [4]: func1(var=var+3)
15
In [5]: func2(var=var+3)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-7e6ea7fc32e9> in <module>()
----> 1 func2(var=var+3)
TypeError: func2() got an unexpected keyword argument 'var'
In [6]:print var
12
var という名前の引数を想定している func1 が、これを適切に処理していることがわかります。var という引数を予期しない func2 は、予期しないキーワードについて TypeError をスローします。の値var
は変更されません。