1

is it possible to assign a variable a maths operator.

this is what I've currently got, just a sample (typed it in now, so dont worry about simple errors)

if image == "lighten":
    red_channel = red_channel + 50
else:  // image is darken
    red_channel = red_channel  - 50

notice how i am repeating the exact same code, with a different operator. Is it possible to achieve something like this:

if (image == "lighten"):
    operator = +
else:
    operator = - 

red_channel = red_channel operator 50

3 Answers 3

7
import operator
if (image == 'lighten'):
    op = operator.add
else:
    op = operator.sub

red_channel = op(red_channel, 50)

Or, if you have a number of possible operations,

op = {
    'lighten':operator.add,
    'darken':operator.sub,
     ...
    }
red_channel = op[image](red_channel,50)
Sign up to request clarification or add additional context in comments.

1 Comment

+1 for directly answering the OP's question and enlightening me to a useful feature.
2

I like inline expressions, so:

red_channel += 50 if image == 'lighten' else -50

Comments

1

Another option rather than going to that length, as long as you are only doing either positive 50 or negative 50 is:

red_channel = red_channel + (flag * 50)

The variable "flag" is either 1 or -1; thus giving you 50 or -50. This won't save a lot of code for this small example, but I use it at times when it is convenient.

1 Comment

I'd suggest not using flag because usually flags are boolean values.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.