#python #coding-style
#python #стиль кодирования
Вопрос:
можно ли присвоить переменной математический оператор.
это то, что у меня есть в настоящее время, просто образец (введите его сейчас, так что не беспокойтесь о простых ошибках)
if image == "lighten":
red_channel = red_channel 50
else: // image is darken
red_channel = red_channel - 50
обратите внимание, как я повторяю точно такой же код с другим оператором.
Возможно ли добиться чего-то подобного:
if (image == "lighten"):
operator =
else:
operator = -
red_channel = red_channel operator 50
Ответ №1:
import operator
if (image == 'lighten'):
op = operator.add
else:
op = operator.sub
red_channel = op(red_channel, 50)
Или, если у вас есть несколько возможных операций,
op = {
'lighten':operator.add,
'darken':operator.sub,
...
}
red_channel = op[image](red_channel,50)
Комментарии:
1. 1 за прямой ответ на вопрос OP и ознакомление меня с полезной функцией.
Ответ №2:
Мне нравятся встроенные выражения, поэтому:
red_channel = 50 if image == 'lighten' else -50
Ответ №3:
Другой вариант, а не переходить к этой длине, если вы выполняете только положительные 50 или отрицательные 50:
red_channel = red_channel (flag * 50)
Переменная «flag» равна либо 1, либо -1; таким образом, вы получаете 50 или -50. Это не сэкономит много кода для этого небольшого примера, но я использую его время от времени, когда это удобно.
Комментарии:
1. Я бы посоветовал не использовать
flag
, потому что обычно флаги являются логическими значениями.