错误在这里:
v.set(str(var = var - dictionary[number]))
我认为您期望口译员进行计算var - dictionary[number]
;将该值分配给var
; 然后将的值作为第一个参数传递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
您可以看到 func1(它确实需要一个名为 var 的参数)处理得很好。func2,它不期望一个名为 var 的参数,抛出一个关于意外关键字的 TypeError。的值var
不变。