2017-10-14 111 views
0

下面的代碼:
當我調用消息處理,我有它其中如果server_handler MSG類型是「nextValidId」,我提取數1003(在下面的例子)轉換爲server_handler函數中的變量order_id2。只有在msg類型爲「nextValidId」的情況下,我如何在主fxn中設置order_id = 1003;否則什麼都不做。的Python:如何通稱爲函數變量回到外部函數

def main(): 
    order_id = 1001 
    tws_conn.registerAll(server_handler) 

# here msg text for example is "<nextValidId orderId=1003>" 
def server_handler(msg): 
    print("Server Msg:", msg.typeName, "-", msg) 
    if msg.typeName == "nextValidId": 
     order_id2 = int(str(msg).split("nextValidId orderId=",1)[1][:-1]) #returns 1003 for above #example 

謝謝。

+0

'如果msg_text.startswith( '

回答

0

有三種方法從一個函數值傳遞出給調用者:

最常見的,明顯的,通常最好的方法是使用聲明。接下來是修改已傳遞到函數中的一些可變對象的狀態(這可能適合您的問題)(其餘方式需要修改全局狀態;幾乎總是設計和編碼實踐不佳的一個症狀)

# here msg text for example is "<nextValidId orderId=1003>" 
def server_handler(msg): 
    print("Server Msg:", msg.typeName, "-", msg) 
    if msg.typeName == "nextValidId": 
     order_id2 = int(str(msg).split("nextValidId orderId=",1)[1][:-1]) #returns 1003 for above #example 
     msg.nextOrder = orderId. # ?? 
    return order_id2 # ?? 

誰在呼喚你server_handler()函數如何調用來處理該下一個有效的ID被分派

相關問題