2016-07-04 42 views
1

首先,我應該告訴我在Python中是全新手! 所以,我可能會試圖做一些不可能的事情,或者應該以不同的方式來完成某件事情。我無法在互聯網上找到任何有關它的例子。Python - 無法將元組作爲參數傳遞給另一個模塊

我在.py中有兩個模塊。 server.py和delay_simulator.py。當我從服務器調用delay_simulator時,我想傳遞一個元組作爲參數。但是我無法收到delay_simulator模塊中的元組參數。

我會把下面的代碼。請注意,該元組是pkt_recv。

server.py(只是部分的代碼)

import delay_simulator 
from collections import namedtuple 
pkt = namedtuple("pkt", ["seq_num", "pkt_type", "data"]) 
. . . 
# !!! - Here is where I call the other module and try to pass the tuple pkt_recv 
returned_object = delay_simulator ("string", pkt_recv, prob_loss, rtt, average_delay) 

delay_simulator.py(代碼只是一部分)

import sys 
from collections import namedtuple 
pkt = namedtuple("pkt", ["seq_num", "pkt_type", "data"]) 
. . . 
caller = str(sys.argv[1]) 
# !!! - Here is where I can't receive the tuple 
pkt_recv = pkt(sys.argv[2]) 
prob_loss = float(sys.argv[3]) 
rtt = float(sys.argv[4]) 
average_delay = float(sys.argv[5]) 

當運行該程序server.py ,模塊delay_simulator.py無法識別第二個參數,它的行爲就好像它不存在一樣! sys.argv是否使用了錯誤的函數?還有另一種方法來傳遞這些參數,包括一個元組嗎?

感謝所有提前:)

+2

模塊不能被調用。你可以編寫一個函數並調用它。你讀過[Python教程](https://docs.python.org/3/tutorial/)嗎? – BrenBarn

+0

不是我應該的。謝謝,我需要這個見解! – user00

回答

0

如果你想從一個模塊變量傳遞給下一個,你需要將其封裝在一個函數。試試這個:

server.py(只是部分的代碼)

import delay_simulator 
from collections import namedtuple 
pkt = namedtuple("pkt", ["seq_num", "pkt_type", "data"]) 
. . . 
# !!! - Here is where I call the other module and try to pass the tuple pkt_recv 
returned_object = delay_simulator.getTuple("string", pkt_recv, prob_loss, rtt, average_delay) 

delay_simulator.py(只是部分的代碼)

import sys 
from collections import namedtuple 
pkt = namedtuple("pkt", ["seq_num", "pkt_type", "data"]) 
. . . 

def getTuple(arg1, arg2, arg3, arg4, arg5): 
    caller = str(sys.arg1) 
    pkt_recv = pkt(sys.arg2) 
    prob_loss = float(sys.arg3) 
    rtt = float(sys.arg4) 
    average_delay = float(sys.arg5) 

    return (caller, pkt_recv, prob_loss, rtt, average_delay) 
+0

謝謝,它正在工作! – user00

相關問題