我最近看到了reference to "exotic signatures"以及他们在2.6中被弃用的事实(并在3.0中删除)。给出的例子是
def exotic_signature((x, y)=(1,2)): return x+y
是什么让这成为“异国情调”的签名?
答案 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中: - )