2015-06-07 111 views
-4

我有一個函數,其中引用了'node1','node2','node3'的變量。Python - 動態命名變量

我想使第二次函數被調用,'node1'變成'node1_a',第三次'node1_b'等等。

這些'動態'變量僅在函數中被引用。如果有助於理解,我在下面有一些代碼。

def marriage(husband, wife): 
    count += 1 
    node1 = pydot.Node(str(husband)) 
    node3 = pydot.Node('node_a', label='', style = 'invisible', shape = 'circle', width = '.001', height = '.001') 
    node2 = pydot.Node(str(wife)) 
    tree.add_edge(pydot.Edge(node1, node3, style = "dashed")) 
    tree.add_edge(pydot.Edge(node3, node2, style = "dashed")) 
+3

聽起來像是你真正需要的是什麼樣的一個列表或字典的數據結構。 – refi64

+0

您可以在函數之外有一個計數器來計算該函數被調用的次數嗎?如果是,則在該函數內部傳遞該計數器,並使用一個字典來生成變量名稱作爲鍵。 –

+0

您是否閱讀過您在編寫標題和問題時彈出的任何*相關問題?這個主題已經在這裏覆蓋了數百次... – MattDMo

回答

0
def marriage(husband, wife, method_dict): 
    count += 1 
    method_dict['node1'][count] = pydot.Node(str(husband)) 
    method_dict['node3'][count]node3 = pydot.Node('node_a', label='', style = 'invisible', shape = 'circle', width = '.001', height = '.001') 
    method_dict['node2'][count]node2 = pydot.Node(str(wife)) 
    tree.add_edge(pydot.Edge(method_dict['node1'][count], method_dict['node3'][count], style = "dashed")) 
    tree.add_edge(pydot.Edge(method_dict['node3'][count], method_dict['node2'][count], style = "dashed")) 

其中

method_dict = {{}} 
0

我認爲你可以嘗試字典關鍵是var名稱和值是var值。每次調用函數時,都應更改calltimeindex。

keyName = [["node"+str(index)+"_"+ chr(i) for i in range(ord('a'),ord('z'))] for index in range(1,4)] 

varDict[keyName[varIndex][callTimeIndex]] = value