Есть ли место для улучшений в этом коде. Я новичок в программировании (python3), изучении и практике функций, связанных с аргументами в последнее время.
def make_pizza(*toppings, **pizza_info):
"""Creating a dictionary for pizza information"""
pizza = {}
pizza_toppings = [topping for topping in toppings]
pizza['toppings'] = pizza_toppings
for key, value in pizza_info.items():
pizza[key] = value
return pizza
def show_pizza(pizza):
"""Showing the order with the information provided by make_pizza() function."""
print("You've ordered " + str(pizza['size']) + " inches size " + pizza[
'crust'].title() + " crust pizza with the toppings of:")
for topping in pizza['toppings']:
print("-" + topping.title())
# Taking order in a form of dictionary structure
order = make_pizza('cheese', 'mushroom', size=12, crust="thin")
# Show the order message
show_pizza(order)
1 ответ
Вы можете использовать стандартные функции копирования вместо копирования вручную:
from copy import copy
def make_pizza(*toppings, **pizza_info):
pizza = pizza_info.copy()
pizza['toppings'] = copy(toppings)
return pizza
И, возможно, используйте dict-computing для слияния информации вместо мутации пиццы:
def make_pizza(*toppings, **pizza_info):
return {
**pizza_info,
'toppings': copy(toppings)
}
Для печати используйте f-строки для упрощения форматирования:
print(f"You've ordered {pizza['size']} inches size {pizza[
'crust'].title()} crust pizza with the toppings of:")
Спасибо за ваше руководство. Я многое понял из этого. Надо очень быстро применить эту практику. 🙂
— Дуб Соэ Сан
Может, я ответил слишком быстро. Обратите внимание, что: — функция копирования предоставит вам тот же тип, что и ввод, который вы ей дадите, поэтому вы получите кортеж для начинки, а не список (что может быть так же хорошо) — копии здесь на самом деле не нужны , поскольку * args и ** kwargs уже создаются заново при вызове функции — копии только мелкие. Нет никакой разницы, когда содержимое представляет собой только строки, поскольку они неизменяемы, но если у вас есть что-то изменяемое, это может вызвать проблемы — но если вы избегаете что-либо мутировать в своих программах, это не будет проблемой
— Гнурфос