python: сделать переменную равной оператору (+, /, *, -) - PullRequest
1 голос
/ 19 октября 2011

можно ли присвоить переменной математический оператор.

это то, что я сейчас получил, просто образец (набрал его сейчас, поэтому не беспокойтесь о простых ошибках)

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

Ответы [ 3 ]

6 голосов
/ 19 октября 2011
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)
2 голосов
/ 19 октября 2011

Мне нравятся встроенные выражения, поэтому:

red_channel += 50 if image == 'lighten' else -50
1 голос
/ 19 октября 2011

Другой вариант, вместо того, чтобы переходить к этой длине, если вы делаете только положительные 50 или отрицательные 50:

red_channel = red_channel + (flag * 50)

Переменная «flag» - это либо 1, либо -1;таким образом, давая вам 50 или -50.Это не сэкономит много кода для этого небольшого примера, но я использую его иногда, когда это удобно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...