Для начала ознакомьтесь с реализацией метода класса _BaseV6._ip_int_from_string()
из модуля ipaddress
, хотя сам модуль был добавлен в Python 3.3.
Когда вывызов ipaddress.IPv6Address('2001:db8::')
(передача Python3 str
), это то, что называется .
Эта функция синтаксического анализа учитывает ряд случаев с разногласиями, такими как IPv4суффикс Если ваша функция ограничена рядом правил, которые являются подмножеством «допустимой строки Ipv6», вы, вероятно, могли бы упростить этот метод. Но достаточно сказать, что есть причина, по которой реализация представляет собой пару сотен строк довольно плотного кода.