Как CPython за кадром оценивает выражения, такие как
args = (2,3)
print(*args)
?
Вышеприведенное явно печатает 2 3
, но что делает CPython, чтобы это появилось?,Таким образом, могу ли я думать о том, что оператор *
, применяемый к итерируемым объектам, является своего рода макросом, который CPython при запуске просто заменяет повторяемым содержимым?
ПРИМЕЧАНИЕ ВСЕМ, КОТОРЫМ ХОТИТЕ ОТМЕТИТЬ МОЙ ВОПРОС, НЕМЕДЛЕННОКАК ДУБЛИКАТ (КАК ПРОИЗОШЛО В ПРОШЛОМ): Этот вопрос не рассматривается Что ** (двойная звезда / звездочка) и * (звезда / звездочка) делают для параметров?
ЧтоВопрос касается того, как *
ведет себя во всех видах сценариев - мне не интересно знать об этом.
Там также есть только одно упоминание CPython (которое не решает мою проблему).
Я хочу знать ** внутренне *, как CPython обрабатывает код, вставленный выше.Могу ли я думать о том, что оператор *
, применяемый к итерируемым объектам, является своего рода макросом, который CPython при запуске просто заменяет итерируемым содержимым, или CPython выполняет более сложную операцию при синтаксическом анализе *args
в приведенном выше сценарии?