2013-12-18 147 views
0

我有這樣的代碼:循環來創建動態變量

if opt1 is not None: 
     user_a, db_a = opt1.split("/") 
     db_a = country_assoc(int(db_a)) 
     client_a = Client(None, user_a, db_a) 
     data_client_a = client_a.get_user() 

    if opt2 is not None: 
     user_b, db_b = opt2.split("/") 
     db_b = country_assoc(int(db_b)) 
     client_b = Client(None, user_b, db_b) 
     data_client_b = client_b.get_user() 

    .... 

但是,我想生成一個循環相似的結構。

這樣做的正確方法是什麼?我正在嘗試這

abcde = ['a', 'b', 'c', 'd', 'e'] 
    for idx, val in enumerate(abcde): 
     if opt+idx is not None: 
      user_+val, db_+val = opt+idx.split("/") 
      db_+val = country_assoc(int(db_+val)) 
      client_+val = Client(None, user_+val, db_+val) 
      data_client_+val = client_+val.get_user() 

回答

0
a = [opt1, opt2, opt3, opt4, opt5] 

data_clients = [] 
    for j in a: 
     if j is not None: 
     user, db = j.split("/") 
     db = country_assoc(int(db)) 
     client = Client(None, user, db) 
     data_clients.append(client.get_user()) 
5

我不明白爲什麼人們覺得有必要嘗試做這種事情。變量名稱不是數據。動態創建變量名稱從來沒有好的理由。

只需將您的值放在字典或列表中。

for idx, val in enumerate(abcde): 
    if opts[idx] is not None: 
     user, db = opts[idx].split("/") 
     users[val] = user 
     dbs[val] = country_assoc(int(db)) 
     clients[val] = Client(None, user, db) 
     data_clients.append(clients[val].get_user())