2016-07-04 5 views
1

まず、私はPythonで全く新しい人だと言わなければなりません! 私は、不可能な何かをしようとしているかもしれないし、別のやり方でやるべきことがあるかもしれない。私はインターネット上でそれについての例を見つけることはできません。Python - タプルを別のモジュールの引数として渡せません

私は2つのモジュールを.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モジュールは第2引数を認識できず、存在しないかのように振る舞います! sys.argvが間違った機能を使用していますか?タプルを含むこれらの引数を渡す別の方法はありますか?あなたは次の1つのモジュールから変数を渡したい場合は、すべて事前に

おかげで:)

+2

モジュールを呼び出すことはできません(コードのほんの一部)

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(コードの部分だけ)。関数を記述して呼び出すことができます。 [Pythonチュートリアル](https://docs.python.org/3/tutorial/)を読んでいますか? – BrenBarn

+0

私はそうではありません。ありがとう、私はこの洞察力が必要でした! – user00

答えて

0

あなたは関数内でそれをカプセル化する必要があります。これを試してみてください:

server.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

関連する問題