Sparkacus
Sparkacus

Reputation: 31

python function string parameter convert to variable name

I'm rather new to Python and programming in general, so I apologise in advance if my terminology is incorrect.

hue_alert_delay = 0

def delays(name, delay):
    global hue_alert_delay

    if name == 'hue_alert_delay':
        for i in range(0, delay):
            hue_alert_delay += 1
            time.sleep(1)

        hue_alert_delay = 0

delays('hue_alert_delay', 60)

What I'm trying to achieve:

I would like the function to convert the 'name' parameter, which is a string input, into a pre-exiting variable, which will negate the need for multiple IF statements.

The above example includes only one IF statement, but for my project there will be a lot more and I would rather keep the function clean and simple.

This won't work, but it's what I'm trying to aim for:

hue_alert_delay = 0

def delays(name, delay):
    global name

    for i in range(0, delay):
        name += 1
        time.sleep(1)

    hue_alert_delay = 0

delays('hue_alert_delay', 60)

Any assistance would be appreciated.

Upvotes: 0

Views: 863

Answers (3)

Abdul Fatir
Abdul Fatir

Reputation: 6357

Use a dictionary like so.

vars = {'hue_alert_delay':0}
def delays(name, delay):
  for i in range(0, delay):
      vars[name] += 1
      time.sleep(1)
  vars[name] = 0

You can also use globals()[name] but I won't recommend it.

Upvotes: 0

TigerhawkT3
TigerhawkT3

Reputation: 49318

Use a dictionary:

vars = {'hue_alert_delay':0}

def delays(name, delay):
    for i in range(delay):
        vars[name] += 1
        time.sleep(1)

    vars[name] = 0

delays('hue_alert_delay', 60)

Upvotes: 0

deceze
deceze

Reputation: 522024

Use a dict:

values = {
    'hue_alert_delay': 0
}

def delays(name, delay):
    values[name] += 1

Whenever you feel like using "variable variables", what you most likely really want is a dict storing key-value associations. Yes, there are other ways to do literally what you want, but that soon leads to insane code.

Upvotes: 1

Related Questions