def上的Python语法无效

时间:2012-10-13 18:21:39

标签: python syntax twisted

我正在尝试设置一个使用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的新手,所以我很无能为力。我把代码剥离到最小,除了类声明和方法标题(添加一个传递)之外的所有内容都是注释但是我得到了同样的结果。这些配对参数是否不再受支持?

1 个答案:

答案 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)