我在另一个程序中使用Python来发送和接收许多类似的消息。本质上,程序发送一个“地址”和一个“值”。为了尽可能简洁,我制作了一本字典来充当switch/case语句。然而,在我深入研究我的代码之前,我想确保我正在编写最有效的代码。你知道吗
许多消息非常相似(只有最后一个数字不同),我想知道是否有某种方法可以连接observe_volume_(digit)
案例。可能会有数百条消息被告知,将每一条消息添加到字典中似乎有点可笑,因为已经有六条消息了。你知道吗
def observe_volume_0(v):
op('constant4').par.value0 = float(v[0])
def observe_volume_1(v):
op('constant4').par.value1 = float(v[0])
def observe_volume_2(v):
op('constant4').par.value2 = float(v[0])
def track_0_name(v):
op('text1').par.text = v[0]
print(v[0])
def track_1_name(v):
op('text1').par.text = v[0]
print(v[0])
def track_2_name(v):
op('text1').par.text = v[0]
print(v[0])
incoming = {
'/track_0_name/x': track_0_name,
'/track_1_name/x': track_1_name,
'/track_2_name/x': track_2_name,
'/observe_volume_0/x': observe_volume_0,
'/observe_volume_1/x': observe_volume_1,
'/observe_volume_2/x': observe_volume_2,
}
def receive(message, args):
full = message.split()
target = full[0]
incoming[target](args)
return
你不需要像
observe_volume_0
,observe_volume_1
这样的函数,你可以把整数作为一个参数传递,然后在它里面有一个exec,就像-现在你可以用这样的方法代替dict-
现在你可以像-
locals()[function_name](num, args)
那样调用,或者你甚至可以把两个函数observe_volume
和track_name
放在一个类中,然后按说明调用here相关问题 更多 >
编程相关推荐