хочу узнать, имеются ли различия по перформансу между первой и второй версией? лично мне больше нравится первая версия, так как там нет глобальных переменных.
в первой версии str2num это локальная (фактически константная) переменная. будет ли интерпретатор создавать ее каждый раз? или он как-то это оптимизирирует? (кеширует например)
есть - ты ищешь в локальном скоупе, а он меньше и ближе.
сделай timeit
timeit показал, что с глобальной переменной на 30% быстрее. значит, интерпретатор не кеширует константную мапу в первом случае?
словари мутабельные, поэтому он не делает таких предположений. Ну и по dis ты же сам видишь куча операций
ссылка на него никуда не утекает, и внутри функции он не меняется. а есть немутабельнный аналог словаря?
собсвтенно поэтому константы и принято выносить в глобальный скоуп
Обсуждают сегодня