Как сказали проффесионалы:
I think this is just the method cache filling up in Python 3.8. When a cache entry gets filled, it drops a reference to None and instead holds a reference to a string.
A little printf-debugging showed this:
>>> import math
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\listobject.c:2488
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\listobject.c:2488
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\compile.c:1331
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\compile.c:1331
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2373
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:6805
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:1363
INCREF None
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2978
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2373
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:6805
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:1363
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
INCREF None
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:3390
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:3391
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:1363
INCREF None
INCREF None
INCREF None
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:1363
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:1363
INCREF None
INCREF None
INCREF None
INCREF None
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2978
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
INCREF None
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2978
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2373
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2373
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2373
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\frameobject.c:430
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:6805
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\frameobject.c:430
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\frameobject.c:430
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:4971
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:4971
INCREF None
INCREF None
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:1363
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\frameobject.c:430
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\frameobject.c:430
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\frameobject.c:430
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:3390
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:3391
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\frameobject.c:430
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\frameobject.c:430
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:4971
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
INCREF None
INCREF None
INCREF None
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\typeobject.c:3160
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:4971
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:4971
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2978
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:4971
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2978
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2978
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:4971
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2978
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2978
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2979
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:1363
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:1363
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\frameobject.c:430
INCREF None
INCREF None
INCREF None
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2373
INCREF None
INCREF None
INCREF None
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:3390
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:3391
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:1363
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:1363
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:1363
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\weakrefobject.c:939
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Objects\funcobject.c:585
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:3390
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:3391
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\ceval.c:2995
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Include\object.h:560
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\pythonrun.c:268
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Modules\_io\bufferedio.c:804
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\pythonrun.c:1126
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Modules\_io\bufferedio.c:804
INCREF None
DECREF None at C:\Users\sween\Source\Repos\cpython2\cpython\Python\pythonrun.c:1134
Перевод:
Я думаю, что это просто заполнения кэша методов в Python 3.8. Когда запись кэша заполняется, она удаляет ссылку на None и вместо этого содержит ссылку на строку.
Небольшой отладочный printf показал это:
-- обрезано --
То есть дело в том что math не хватает кэша методов (method cache) и он удаляет оттуда лишние None.