#python #python-3.x #functional-programming #global-variables
#python #python-3.x #функциональное программирование #глобальные переменные
Вопрос:
У меня есть сценарий, который может быть реализован несколькими способами. Мне нужно предложение, которое является более оптимизированным / python способом реализации и почему?
давайте рассмотрим вызовы вложенных функций как funca1 -> funca2 -> funca3 -> funca4 funcb1 -> funcb2 -> funcb3 -> funcb4
if __name__ == "__main__":
funca1()
funcb1()
и переменная varx используется / или требуется только funca4 и funcb3.
тогда у нас есть следующие варианты
- создайте varx как глобальную переменную и используйте его funca4 и funcb3, не проходя через все функции
- передайте переменную varx во все функции, даже если она используется только в двух функциях
- создайте другую функцию functions get_varx() и используйте ее только внутри funca4, funcb4.
Этого также можно достичь, создав класс и назначив varx в качестве свойства . Но текущий дизайн проекта не позволяет этого
Ответ №1:
Я запустил демонстрационный код с приведенными вами сценариями, рассчитал время выполнения с помощью time
модуля и получил следующие результаты:
Рейтинг самого быстрого выполнения:
- Создание другой функции для получения значения.
- Создание
varx
в качестве глобальной переменной. - Передача
varx
переменной через все функции.
Комментарии:
1. Вы можете прочитать об этом здесь . Я использовал
perf_counter()
метод для получения результатов.2. Вы можете прочитать об этом здесь . Я использовал
perf_counter()
метод для получения результатов.
Ответ №2:
Оптимизация относительна.
Вы можете оптимизировать с помощью:-
-
в вашем коде должно быть меньше строк / символов
-
вы хотите минимальное потребление памяти
-
требуется минимальное время.
Минимальное время было бы другим методом функции
Минимальная память и минимальные строки будут глобальной переменной.
Передача переменной через all просто не нужна и дублирует переменные в каждой локальной области, потребляя много памяти, поэтому этого следует избегать.