У нас есть следующий вызов функции, используемый в нескольких местах в непосредственной близости:
func(param1, param2, param3, param4, param5)
Я хотел бы использовать
funccall()
во всех местах.
Есть ли понятие макросов? Частицы со всеми приведенными аргументами (отмеченный ответ как правильный) правильный, и он работает, если все последующие вызовы находятся в одной области.
Что делать, если сценарий выглядит так:
A():
func(p1,p2,p3,p4,p5) # 3 times
B():
func(p1,p2,p3,p4,p5) # 2 times
C():
func(p1,p2,p3,p4,p5) # 4 times
Использование частичного:
A():
funccall = partial(func,p1,p2,p3,p4,p5)
funccall() # 3 times
B():
funccall = partial(func,p1,p2,p3,p4,p5)
funccall() # 2 times
C():
funccall = partial(func,p1,p2,p3,p4,p5)
funccall() # 4 times
Идеально (если в коде соблюдаются правила и читаемость не является проблемой)
macro funccall() = func(p1,p2,p3,p4,p5)
A():
funccall() # 3 times
B():
funccall() # 2 times
C():
funccall() # 4 times
установить параметры по умолчанию и только вызывать функцию явно с теми параметрами, которые отличаются от параметров по умолчанию!
например def func(param1=0, param2="abc", param3=0.3)
для определения
и result = func(param1=3)
при вызове.
(не проверено, но я не вижу причин, почему это не должно работать!)
func()
чтобы принять один параметр вместо многих; или принять структуру данных (по умолчанию: пустая структура данных) с отдельными параметрами в качестве необязательных переопределений.