Бинарный Python для унарной функции

Следуя этой теме об итерации последовательности операторов, я также хочу позаботиться об унарных операторах в той же последовательности. Я использовал лямбда-функцию, чтобы избавиться от второго аргумента, но есть ли специальные инструменты / библиотеки для этого в Python?

a, b = 5, 7
for op in [('+', operator.add), ('-', lambda x, y: operator.neg(x))]:
    print("{} {} {} = {}".format(a, op[0], b, op[1](a, b)))

1 ответ

Решение

Просто разделите обработку двоичных и унарных операторов.

a, b = 5, 7
# binary ops
for op in [('+', operator.add), ('-', operator.sub]:
    print("{} {} {} = {}".format(a, op[0], b, op[1](a, b)))

#unary ops
for op in [('-', operator.neg]:
    print("{} {} = {}".format(op[0], a, op[1](a)))
Другие вопросы по тегам