0

我正在尝试设置一个带有 Twisted 的 UDP 服务器,遵循这个http://twistedmatrix.com/documents/current/core/howto/udp.html

但是,我刚开始就碰壁了。我试过这个示例代码:

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 新手,所以我一无所知。我将代码精简到最少,注释了除类声明和方法头(添加一个传递)之外的所有内容,但我得到了相同的结果。不再支持这些配对参数了吗?

4

1 回答 1

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

蟒蛇3错误:

    def datagramReceived(self, data, (host, port)):
                                     ^
SyntaxError: invalid syntax

在你的代码中尝试这个只是为了确定你的 python 版本:

import sys
print(sys.version)
于 2012-10-13T18:33:44.813 回答