Вы можете сделать
for i in range(1, 4, 1):
name = dictionary[i]
def _fn(price, quantity):
total = price*quantity
return total
globals()[name] = _fn
, но делать это довольно редко.
Более разумный способ сделать это (как описывает @martineau) - это поместить функциинепосредственно в dict:
def Apples(price, quantity):
total = price * quantity
return total
def Pears(...): ...
def Carrots(...): ...
dictionary = {1: Apples, 2: Pears, 3: Carrots}
вы бы назвали такие функции как:
dictionary[1](price=2.50, quantity=4)
, если вы переименуете dictionary
в total
, это может быть вполне читабельно:
product_id = 1
total_price = total[product_id](price=2.50, quantity=4)
если все функции одинаковы, это еще проще:
def totalfn(price, quantity):
total = price * quantity
return total
total = {1: totalfn, 2: totalfn, 3: totalfn}
или даже короче, если у вас много продуктов:
total = {productid: totalfn for productid in (1,2,3)}