Что такое экзотическая сигнатура функции в Python? - PullRequest
3 голосов
/ 19 мая 2009

Недавно я увидел ссылку на «экзотические подписи» и тот факт, что они устарели в 2.6 (и удалены в 3.0). Пример приведен

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

Что делает эту "экзотическую" подпись?

Ответы [ 3 ]

6 голосов
/ 19 мая 2009

Дополнительная информация о распаковке параметров кортежа (и почему она удаляется) здесь: http://www.python.org/dev/peps/pep-3113/

6 голосов
/ 19 мая 2009

Что экзотично, так это то, что x и y представляют один аргумент функции, который распакован в два значения ... x и y. Это эквивалентно:

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

Обе функции требуют один аргумент (список или кортеж), который содержит два элемента.

1 голос
/ 20 мая 2009

Вот немного более сложный пример. Допустим, вы занимаетесь графическим программированием и у вас есть список точек.

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: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...