2016-06-17 16 views
0

私はPythonとプログラミング全般に新しいので、用語が正しくない場合は事前にお詫びします。Python関数の文字列パラメータを変数名に変換する

私は何を達成しようとしている
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) 

:私は必要性を否定します前出の変数の中に、文字列の入力は「名前」パラメータを、変換する機能を希望

複数のIF文の場合

上記の例にはIF文が1つしか含まれていませんが、私のプロジェクトにはもっと多くのものがあり、機能をすっきりとシンプルに保ちたいと思います。

これは動作しませんが、それは私が目指すしようとしているものです:

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) 

どのような援助をいただければ幸いです。

答えて

0

このような辞書を使用してください。

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

globals()[name]でも使用できますが、お勧めしません。

+1

どうもありがとう 'はGlobal'キーワードはここに不要です。あなたはその名前にいつでも再割り当てしようとしていません。あなたはそのオブジェクトに突然変異を起こしているだけです。 – TigerhawkT3

+0

ありがとう、私は私のプロジェクトにこの原則を適用し、それは完全に働いた。 – Sparkacus

+0

私はフォーラムでもかなり新しいです:)。投稿を更新して解決方法を説明する必要がありますか? – Sparkacus

1

辞書を使用します。

values = { 
    'hue_alert_delay': 0 
} 

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

あなたは、「変数の変数」を使用してのように感じる時はいつでも、あなたが最も可能性の高い、本当に欲しいのはキーと値のペアの関連付けを保存する辞書です。はい、そこにあなたが望むものを文字通り行うために他の方法ですが、すぐに非常識なコードにつながります。

+0

を – Sparkacus

0

は、辞書を使用します

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) 
+0

あなたにすべてありがとう – Sparkacus

関連する問題