O que é uma assinatura de função exótica em Python?

votos
3

Recentemente, vi uma referência ao assinaturas exóticos e o facto de terem sido preterido na 2,6 (e removido em 3,0). O exemplo dado é

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

O que torna este um exótico assinatura?

Publicado 19/05/2009 em 18:28
fonte usuário
Em outras línguas...                            


3 respostas

votos
6

Mais informações sobre parâmetro tupla desembalar (e por que ele é removido) aqui: http://www.python.org/dev/peps/pep-3113/

Respondeu 19/05/2009 em 18:41
fonte usuário

votos
6

O que é exótico é que X e Y representam um único argumento função que é descompactado em dois valores ... x e y. É equivalente a:

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

Ambas as funções exigem um único argumento (lista ou tupla) que contém dois elementos.

Respondeu 19/05/2009 em 18:31
fonte usuário

votos
1

Aqui está um exemplo um pouco mais complexo. Vamos dizer que você está fazendo algum tipo de programação gráfica e você tem uma lista de pontos.

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

e você quer saber o quão longe eles são de origem. Você pode definir uma função como esta:

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

e então você pode encontrar as distâncias dos seus pontos de (0,0) como:

map(magnitude, points)

... bem, pelo menos, você poderia, em 2.x do Python :-)

Respondeu 19/05/2009 em 23:11
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more