Можете ли вы создать метод с набором параметров? - PullRequest
1 голос
/ 06 августа 2020

Можете ли вы сделать что-то подобное в Python?

def give_me_your_three_favorite_things_in_each_given_category(
    food=(first, second, third), 
    color=(first, second, third))
    println(f"Your favorite foods are {food.first}, {food.second} and {food.third}")
    println(f"Your favorite colors are {color.first}, {color.second} and {color.third}")

give_me_your_three_favorite_things_in_each_given_category(
    food=(first="pizza", second="pasta", third="ice cream"),
    color=(first="black", second="blue", third="green")

Ожидаемый результат: «Ваши любимые блюда - пицца, паста и мороженое» «Ваши любимые цвета - черный, синий и зеленый»

1 Ответ

2 голосов
/ 06 августа 2020

Конечно. Вы бы сделали это следующим образом:

def give_me_your_three_favorite_things_in_each_given_category(food, color):
    first_food, second_food, third_food = food
    print(f"Your favorite foods are {first_food}, {second_food}, {third_food}")
    first_color, second_color, third_color = color
    print(f"Your favorite colors are {first_color}, {second_color}, {third_color}")

Здесь вы можете видеть, что мы получаем кортежи как параметры, а затем распаковываем их.

Затем вы можете вызовите функцию с помощью

give_me_your_three_favorite_things_in_each_given_category(
food=("pizza", "pasta", "ice cream"),
color=("black", "blue", "green"))

. Вы также можете использовать именованные кортежи, чтобы иметь имена для каждого значения в кортеже:

from collections import namedtuple
Food = namedtuple("Food", ("first", "second", "third"))
Color = namedtuple("Color", ("first", "second", "third"))
give_me_your_three_favorite_things_in_each_given_category(
    food=Food(first="pizza", second="pasta", third="ice cream"),
    color=Color(first="black", second="blue", third="green")
)
...