2014-03-12 109 views
0

我有下面的代碼,我希望在運行時感受函數映射的參數。它應該像Python中函數的參數

#devices = map(InputDevice, ('/dev/input/event15','/dev/input/event16')) 

但是,當我嘗試在運行時執行它,它不起作用。這裏是我的嘗試:

readers = "" 
devices = map(InputDevice, list_devices()) 
for dev in devices: 
    if "深" in dev.name or "Barcode" in dev.name: 
     if readers == "": 
     readers = "'" + dev.fn + "'" 
     else: 
     readers = readers + ", '" + dev.fn + "'" 

devices = map(InputDevice, (readers)) 

,讀者準確顯示'的/ dev /輸入/ event15', '的/ dev /輸入/ event16',但此字符串不爲參數工作。我猜這是因爲逗號不起作用。有誰知道我該怎麼做?

此功能是evdev的一部分。

從此開始感謝! 此致敬禮, Erik

回答

1

它看起來像我想你想readers是一個非字符串迭代。也許嘗試:

devices = map(InputDevice, readers.split(',')) 

這將分裂readers到一個列表,而不是保持它作爲一個字符串。

這仍然不是特別乾淨的代碼。更好的做法是先建立一個列表:

readers = [] 
devices = map(InputDevice, list_devices()) 
for dev in devices: 
    if "深" in dev.name or "Barcode" in dev.name: 
     readers.append(dev.fn) 

devices = map(InputDevice, (readers)) 
+0

非常感謝。它完美的作品。這正是我需要的! –