1.partial
1 つ目は部分関数です。これは、関数のオプションのパラメーターを再バインドし、呼び出し可能な部分オブジェクトを生成できます。パラメータを選択するときは、パラメータ名を記述する必要があることに注意してください。
2.update_wrapper次に、カプセル化された関数の __name__、__module__、__doc__、__dict__ をカプセル化関数にコピーできる update_wrapper 関数があります。りー
しかし、結局のところ、代入ステートメントが 4 行減っただけです。
>>> int('10') # 实际上等同于int('10', base=10)和int('10', 10) 10 >>> int('10', 2) # 实际上是int('10', base=2)的缩写 2 >>> from functools import partial >>> int2 = partial(int, 2) # 这里我没写base,结果就出错了 >>> int2('10') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: an integer is required >>> int2 = partial(int, base=2) # 把base参数绑定在int2这个函数里 >>> int2('10') # 现在缺省参数base被设为2了 2 >>> int2('10', 3) # 没加base,结果又出错了 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: keyword parameter 'base' was given by position and by name >>> int2('10', base=3) 3 >>> type(int2) <type 'functools.partial'>
結果は同じです: _ordering
最後にtotal_ordering 関数は、クラスに豊富な並べ替えメソッドを提供し、デコレーターを使用して操作を簡素化します。使用する場合は、__lt__()、__le__()、__gt__()、または __ge__() をクラス内で定義する必要があります。 __eq__() メソッドをクラスに追加する必要があります。
#-*- coding: gbk -*- def thisIsliving(fun): def living(*args, **kw): return fun(*args, **kw) + '活着就是吃嘛。' return living @thisIsliving def whatIsLiving(): "什么是活着" return '对啊,怎样才算活着呢?' print whatIsLiving() print whatIsLiving.__doc__ print from functools import update_wrapper def thisIsliving(fun): def living(*args, **kw): return fun(*args, **kw) + '活着就是吃嘛。' return update_wrapper(living, fun) @thisIsliving def whatIsLiving(): "什么是活着" return '对啊,怎样才算活着呢?' print whatIsLiving() print whatIsLiving.__doc__
結果を印刷
对啊,怎样才算活着呢?活着就是吃嘛。 None 对啊,怎样才算活着呢?活着就是吃嘛。 什么是活着