Как `typing.Protocol` обеспечивает структурную типизацию в Python, и в чём его ключевые отличия от номинальной типизации? — ДейлиПреп