Есть ли способ определить пару кортежей в качестве аргумента функции ? Я застрял с этим «распаковка параметров кортежа не поддерживается в Python 3».

#parameters #tuples #python-3.6

Вопрос:

Мой код должен возвращать евклидово расстояние на основе этих 2 кортежей:

 def distance_points((x1, y1), (x2, y2)):
    dist = ((x1 - x2)**2   (y1 - y2)**2)** 0.5
    return dist
print(distance_points((1.0, 1.0), (2.0, 1.0)))
 

Ответ №1:

Вы можете переписать свою функцию и выполнить распаковку кортежа в теле функции (как указано в официальном документе PEP 3113-Удаление распаковки параметра кортежа). Например:

 def distance_points(p1, p2):
    (x1, y1), (x2, y2) = p1, p2
    dist = ((x1 - x2) ** 2   (y1 - y2) ** 2) ** 0.5
    return dist


print(distance_points((1.0, 1.0), (2.0, 1.0)))
 

Комментарии:

1. Спасибо! Это решило проблему! 🙂