我正在尝试设置一个使用Twisted的UDP服务器[{3}}
然而,我刚刚开始打砖墙。我试过这个示例代码:
from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor
class Echo(DatagramProtocol):
def datagramReceived(self, data, (host, port)):
print "received %r from %s:%d" % (data, host, port)
self.transport.write(data, (host, port))
reactor.listenUDP(9999, Echo())
reactor.run()
我明白了:
def datagramReceived(self, data, (host, port)):
^
SyntaxError: invalid syntax
我是Python的新手,所以我很无能为力。我把代码剥离到最小,除了类声明和方法标题(添加一个传递)之外的所有内容都是注释但是我得到了同样的结果。这些配对参数是否不再受支持?
答案 0 :(得分:3)
你确定它是python 2.7。因为PEP 3113 -- Removal of Tuple Parameter Unpacking描述了在Python 3中删除该语法。作为测试,当我在python 2.7中运行下面的虚函数时,它可以工作。在Python 3.2中,它给出了你完全相同的错误:
def datagramReceived(self, data, (host, port)):
pass
python 3错误:
def datagramReceived(self, data, (host, port)):
^
SyntaxError: invalid syntax
在你的代码中尝试这个以确保你的python版本:
import sys
print(sys.version)