在最近一次关于pythono中的变量绑定的争论之后,我决定从正反两方面列出一些在不同方法中python的变量绑定情况。我们先从可行的方法开始吧。
def add(x,y):
return x + y
from functools import partial
add5_partial = partial(add, 5)
add5_partial(10) # 15
add5_lambda = lambda x: add(x, 5)
add5_lambda(10) # 15
我对partial的抱怨
partial不是function[译注:我觉得这样的术语还是直接用英文比较准确],并且经常得不到一个function应该得到的结果。partial用纯python很容易实现,但我只能猜想,考虑到性能,它是用C来实现的。来看一些例子:
1.Partial在methods里不能工作:
from functools import partial
class Cell(object):
def set_state(self, state):
self._state = state
set_alive = partial(set_state, state=True)
set_dead = partial(set_state, state=False)
>>>Cell().set_alive()
Traceback (most recent call last):
File "", line 1, in
TypeError: set_state() takes exactly 2 arguments (1 given)
这是为什么&