當我調用一個函數,我希望能夠在功能定義動態的變量名,像這樣......什麼是對的方法動態定義局部變量的最佳方式
def build_ports(portlist):
for idx, portname in enumerate(portlist):
chassis, slot, port = portname.split('/')
vartxt = "p%i" % idx
locals()[vartxt] = Port() # Class defining a port object
locals()[vartxt].port_method1(chassis, slot, port)
if idx > 5:
locals()[vartxt].port_method2() # Only call this object method, if idx > 5
但我們都知道,locals()
是隻讀的,不像globals()
...這樣的解釋,當它看到locals()[vartxt]
barfs ...
有什麼方法來定義一個方法動態變量不會污染全局命名空間(或更糟的是,在方法中使用全局變量,何時從未在該方法中定義)?
爲什麼不在任何地方使用「端口」? – Stefano 2011-04-15 12:14:56
我簡化了代碼 – 2011-04-15 12:17:53
賦值語句創建一個局部變量。爲什麼要做其他事情?你的「基於索引命名的變量」是字典的用途。你爲什麼不爲這個使用簡單的'dict'? – 2011-04-15 13:12:29