Kon52
Если сможете, на пальцах.
Хороший вариант функции
>>> def mul3(obj): ... return obj * 3 ... >>> mul3(1) 3 >>> >>> mul3('a') 'aaa' >>> >>> mul3([1, 2, 3]) [1, 2, 3, 1, 2, 3, 1, 2, 3] >>> >>> mul3(mul3('abc')) 'abcabcabcabcabcabcabcabcabc' >>> >>> mul3([mul3('abc')]) ['abcabcabc', 'abcabcabc', 'abcabcabc'] >>> >>> mul3([tuple(mul3([mul3('abc'), mul3(mul3(3))]))]) [('abcabcabc', 27, 'abcabcabc', 27, 'abcabcabc', 27), ('abcabcabc', 27, 'abcabcabc', 27, 'abcabcabc', 27), ('abcabcabc', 27, 'abcabcabc', 27, 'abcabcabc', 27)] >>> >>> mul3('a') * mul3(2) 'aaaaaaaaaaaaaaaaaa' >>> >>> mul3('a') + mul3('bb') 'aaabbbbbb' >>>
Плохой вариант функции
>>> def mul3(obj): ... obj.x *= 3 ... return obj ... >>> class A: ... x = 1 ... >>> a = mul3(A()) >>> >>> mul3(1) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in mul3 AttributeError: 'int' object has no attribute 'x' >>> >>> mul3('a') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in mul3 AttributeError: 'str' object has no attribute 'x' >>> >>> mul3([1, 2, 3]) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in mul3 AttributeError: 'list' object has no attribute 'x' >>> >>> mul3(A()) + mul3(A()) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'A' and 'A' >>> >>> mul3(A()) * mul3(A()) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for *: 'A' and 'A' >>>
Вот то же касается и редуктора. Если ты написал функцию для редуктора, это значит, что для другого редуктора ты будешь писать ещё одну функцию, функцию для другого редуктора. А когда надо будет писать функцию для третьего редуктора, ты будешь писать ещё одну функцию, но уже для третьего редуктора.
А всё потому, что ты первую функцию пришпилил к формату первого редуктора, который немного отличается от формата второго редуктора и полностью отличается от формата третьего.
Хотя все может быть
Просто особых надежд питать не стоит