TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #126 · 31 јул.

Python по умолчанию кеширует числа int в диапазоне -5...256. Думаю, это всем известный факт. >>> a = 10 >>> b = 10 >>> a is b True >>> a = 270 >>> b = 270 >>> a is b False Но вот что интересно, это не сработает внутри модуля. # matchtest.py #### a = 270 b = 270 print(a is b) # end file ######## >>> import matchtest True Почему одно и тоже работает по разному? Что за двойные стандарты? Вот вам подсказка, в интерактивной консоли это можно повторить, запустив обе команды как одну. >>> a = 270; b = 270 >>> a is b True А разница в том как интерпретатор получает код, точней какими порциями. Каждую "порцию" он "интерпретирует", попутно оптимизируя логику кода. А оптимизация замечает нашу "бездарную писанину" и исправляет явные ошибки. Грубо говоря, такой код: a = 270 b = 270 Превращается в нечто такое: a = b = 270 Зачем создавать два одинаковых объекта когда можно создать один объект и две ссылки? Если выполнять команды по отдельности то оптимизация не сработает, так как это отдельные объекты кода. Если же это одна команда, введёная в консоль или код загружен из модуля, то интерпретатор увидит это как единый блок. Этап оптимизации изменит исходный код и это сведёт на нет наши исследования, выдав не то что мы ожидаем. #triks

Hashtags

Резултати

Пронајдени 0 слични објави

Глобално пребарување

Не се пронајдени слични објави.

Оваа објава нема претходно пресметани резултати на сличност.