Python中的异域函数签名是什么?

时间:2009-05-19 17:28:52

标签: python

我最近看到了reference to "exotic signatures"以及他们在2.6中被弃用的事实(并在3.0中删除)。给出的例子是

def exotic_signature((x, y)=(1,2)): return x+y

是什么让这成为“异国情调”的签名?

3 个答案:

答案 0 :(得分:6)

奇怪的是x和y表示单个函数参数,它被解压缩为两个值... x和y。它相当于:

def func(n):
    x, y = n
    ...

这两个函数都需要一个包含两个元素的参数(list或tuple)。

答案 1 :(得分:6)

有关元组参数解包的详细信息(及其删除原因),请点击此处: http://www.python.org/dev/peps/pep-3113/

答案 2 :(得分:1)

这是一个稍微复杂的例子。假设您正在进行某种图形编程,并且您有一个点列表。

points = [(1,2), (-3,1), (4,-2), (-1,5), (3,3)]

你想知道他们离原点有多远。您可以定义这样的函数:

def magnitude((x,y)):
    return (x**2 + y**2)**0.5

然后你可以找到点(0,0)的距离为:

map(magnitude, points)

......好吧,至少,你可以在python 2.x中: - )