Содержание страницы
21.28. ipaddress – библиотека для работы с IPv4/IPv6¶ipaddress – IPv4/IPv6 manipulation library
Исходный код: Lib/ipaddress.py
ipaddress предоставляет возможности для создания, изменения и работы с адресами и сетями IPv4 и IPv6.
Функции и классы этого модуля упрощают выполнение различных задач, связанных с IP-адресами: проверку, находятся ли два хоста в одной подсети; перебор всех хостов в заданной подсети; проверку, является ли строка корректным IP-адресом или определением сети, и так далее.
Это полная справочная информация по модулю API. Обзор и введение см. в Введение в модуль ipaddress.
Новое в версии 3.3.
21.28.1. Удобные фабричные функции¶Convenience factory functions
Модуль ipaddress предоставляет фабричные функции для удобного создания IP-адресов, сетей и интерфейсов:
- ipaddress.ip_address(address)¶
Возвращает объект IPv4Address или IPv6Address в зависимости от IP-адреса, переданного в качестве аргумента. Можно передавать как IPv4, так и IPv6 адреса; целые числа меньше 2**32 по умолчанию считаются IPv4. Исключение ValueError выбрасывается, если address не представляет допустимый IPv4 или IPv6 адрес.
>>> ipaddress.ip_address('192.168.0.1')
IPv4Address('192.168.0.1')
>>> ipaddress.ip_address('2001:db8::')
IPv6Address('2001:db8::')
- ipaddress.ip_network(address, strict=True)¶
Возвращает объект IPv4Network или IPv6Network в зависимости от IP-адреса, переданного в качестве аргумента. address – это строка или целое число, представляющее IP-сеть. Можно передавать как IPv4, так и IPv6 сети; целые числа меньше 2**32 по умолчанию считаются IPv4. strict передаётся в конструктор IPv4Network или IPv6Network. Исключение ValueError выбрасывается, если address не представляет допустимый IPv4 или IPv6 адрес, или если в сети установлены биты хоста.
>>> ipaddress.ip_network('192.168.0.0/28') IPv4Network('192.168.0.0/28')
- ipaddress.ip_interface(address)¶
Возвращает объект IPv4Interface или IPv6Interface в зависимости от IP-адреса, переданного в качестве аргумента. address – это строка или целое число, представляющее IP-адрес. Можно передавать как IPv4, так и IPv6 адреса; целые числа меньше 2**32 по умолчанию считаются IPv4. Исключение ValueError выбрасывается, если address не представляет допустимый IPv4 или IPv6 адрес.
Недостаток этих удобных функций в том, что необходимость поддержки обоих форматов – IPv4 и IPv6 – приводит к тому, что сообщения об ошибках содержат минимум информации о точной ошибке, поскольку функции не знают, какой формат предполагался. Более подробные сообщения об ошибках можно получить, напрямую вызывая соответствующие версии конструкторов классов.
21.28.2. IP-адреса¶IP Addresses
21.28.2.1. Объекты адресов¶Address objects
Объекты IPv4Address и IPv6Address имеют много общих атрибутов. Некоторые атрибуты, имеющие смысл только для IPv6-адресов, также реализованы в объектах IPv4Address, чтобы упростить написание кода, корректно работающего с обеими версиями IP.
- class ipaddress.IPv4Address(address)¶
Создаёт IPv4-адрес. Исключение AddressValueError выбрасывается, если address не является допустимым IPv4-адресом.
Корректным IPv4-адресом считается следующее:
- Строка в десятично-точечной нотации, состоящая из четырёх десятичных целых чисел в диапазоне от 0 до 255 включительно, разделённых точками (например, 192.168.0.1). Каждое целое число представляет октет (байт) адреса. Начальные нули допускаются только для значений меньше 8 (поскольку между десятичной и восьмеричной интерпретацией таких строк нет неоднозначности).
- Целое число, помещающееся в 32 бита.
- Целое число, упакованное в объект bytes длиной 4 (старший октет первым).
>>> ipaddress.IPv4Address('192.168.0.1') IPv4Address('192.168.0.1') >>> ipaddress.IPv4Address(3232235521) IPv4Address('192.168.0.1') >>> ipaddress.IPv4Address(b'\xC0\xA8\x00\x01') IPv4Address('192.168.0.1')
- version¶
Соответствующий номер версии: 4 для IPv4, 6 для IPv6.
- max_prefixlen¶
Общее количество бит в представлении адреса для данной версии: 32 для IPv4, 128 для IPv6.
Префикс определяет количество старших бит в адресе, которые сравниваются, чтобы определить, принадлежит ли адрес сети.
- compressed¶
- exploded¶
Строковое представление в десятичной записи с точками. Начальные нули никогда не включаются в представление.
Поскольку IPv4 не определяет сокращённой записи для адресов с нулевыми октетами, эти два атрибута всегда совпадают с str(addr) для IPv4-адресов. Наличие этих атрибутов упрощает написание кода отображения, который может работать как с IPv4, так и с IPv6-адресами.
- packed¶
Двоичное представление этого адреса – объект bytes соответствующей длины (старший октет первым). Для IPv4 это 4 байта, для IPv6 – 16 байт.
- is_multicast¶
True, если адрес зарезервирован для многоадресной рассылки. См. RFC 3171 (для IPv4) или RFC 2373 (для IPv6).
- is_private¶
True, если адрес выделен для частных сетей. См. iana-ipv4-special-registry (для IPv4) или iana-ipv6-special-registry (для IPv6).
- is_global¶
True, если адрес выделен для публичных сетей. См. iana-ipv4-special-registry (для IPv4) или iana-ipv6-special-registry (для IPv6).
Новое в версии 3.4.
- is_reserved¶
True, если адрес иным образом зарезервирован IETF.
- class ipaddress.IPv6Address(address)¶
Создаёт IPv6-адрес. Если address не является допустимым IPv6-адресом, возникает исключение AddressValueError.
Допустимый IPv6-адрес образуется следующим образом:
- Строка, состоящая из восьми групп по четыре шестнадцатеричные цифры, каждая group представляет 16 бит. Группы разделяются двоеточиями. Это описывает развёрнутую (полную) нотацию. Строка может также быть сжатой (краткой нотацией) различными способами. См. RFC 4291 для подробностей. Например, "0000:0000:0000:0000:0000:0abc:0007:0def" может быть сжата до "::abc:7:def".
- Целое число, помещающееся в 128 бит.
- Целое число, упакованное в объект bytes длиной 16 байт, с прямым порядком байт (big-endian).
>>> ipaddress.IPv6Address('2001:db8::1000') IPv6Address('2001:db8::1000')
- compressed¶
Краткая форма представления адреса, в которой опущены ведущие нули в группах, а самая длинная последовательность групп, состоящих полностью из нулей, сжата в одну пустую группу.
Это также значение, возвращаемое str(addr) для IPv6-адресов.
- exploded¶
Полная форма представления адреса, включающая все ведущие нули и группы, состоящие полностью из нулей.
Для следующих атрибутов см. соответствующую документацию класса IPv4Address:
- packed¶
- version¶
- max_prefixlen¶
- is_multicast¶
- is_private¶
- is_global¶
- is_unspecified¶
- is_reserved¶
- is_loopback¶
- is_link_local¶
Новое в версии 3.4: is_global
- is_site_local¶
True, если адрес зарезервирован для использования в site-local. Обратите внимание, что пространство site-local адресов было объявлено устаревшим в RFC 3879. Используйте is_private для проверки, находится ли этот адрес в пространстве уникальных локальных адресов, как определено в RFC 4193.
- ipv4_mapped¶
Для адресов, которые выглядят как IPv4-mapped адреса (начинаются с ::FFFF/96), это свойство возвращает встроенный IPv4-адрес. Для любого другого адреса это свойство будет None.
21.28.2.2. Преобразование в строки и целые числа¶Conversion to Strings and Integers
Для взаимодействия с сетевыми интерфейсами, такими как модуль socket, адреса должны быть преобразованы в строки или целые числа. Это делается с помощью встроенных функций str() и int():
>>> str(ipaddress.IPv4Address('192.168.0.1'))
'192.168.0.1'
>>> int(ipaddress.IPv4Address('192.168.0.1'))
3232235521
>>> str(ipaddress.IPv6Address('::1'))
'::1'
>>> int(ipaddress.IPv6Address('::1'))
1
21.28.2.3. Операторы¶Operators
Объекты адресов поддерживают некоторые операторы. Если не указано иное, операторы могут применяться только между совместимыми объектами (т.е. IPv4 с IPv4, IPv6 с IPv6).
21.28.2.3.1. Операторы сравнения¶Comparison operators
Объекты адресов можно сравнивать с помощью обычных операторов сравнения. Несколько примеров:
>>> IPv4Address('127.0.0.2') > IPv4Address('127.0.0.1')
True
>>> IPv4Address('127.0.0.2') == IPv4Address('127.0.0.1')
False
>>> IPv4Address('127.0.0.2') != IPv4Address('127.0.0.1')
True
21.28.2.3.2. Арифметические операторы¶Arithmetic operators
Целые числа можно прибавлять к объектам адресов или вычитать из них. Несколько примеров:
>>> IPv4Address('127.0.0.2') + 3
IPv4Address('127.0.0.5')
>>> IPv4Address('127.0.0.2') - 3
IPv4Address('126.255.255.255')
>>> IPv4Address('255.255.255.255') + 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ipaddress.AddressValueError: 4294967296 (>= 2**32) is not permitted as an IPv4 address
21.28.3. Определения IP-сетей¶IP Network definitions
Объекты IPv4Network и IPv6Network предоставляют механизм для определения и проверки определений IP-сетей. Определение сети состоит из маски и сетевого адреса и, таким образом, задаёт диапазон IP-адресов, которые равны сетевому адресу при наложении маски (побитовое И) с маской. Например, определение сети с маской 255.255.255.0 и сетевым адресом 192.168.1.0 состоит из IP-адресов в диапазоне от 192.168.1.0 до 192.168.1.255 включительно.
21.28.3.1. Префикс, маска сети и маска хоста¶Prefix, net mask and host mask
There are several equivalent ways to specify IP network masks. A prefix /<nbits> is a notation that denotes how many high-order bits are set in the network mask. A net mask is an IP address with some number of high-order bits set. Thus the prefix /24 is equivalent to the net mask 255.255.255.0 in IPv4, or ffff:ff00:: in IPv6. In addition, a host mask is the logical inverse of a net mask, and is sometimes used (for example in Cisco access control lists) to denote a network mask. The host mask equivalent to /24 in IPv4 is 0.0.0.255.
21.28.3.2. Объекты сетей¶Network objects
Все атрибуты, реализованные объектами адресов, также реализованы и объектами сетей. Кроме того, объекты сетей реализуют дополнительные атрибуты. Все они общие для IPv4Network и IPv6Network, поэтому для избежания дублирования они документированы только для IPv4Network.
- class ipaddress.IPv4Network(address, strict=True)¶
Создаёт определение IPv4-сети. адрес может быть одним из следующих:
Строка, содержащая IP-адрес и необязательную маску, разделённые косой чертой (/). IP-адрес является сетевым адресом, а маска может быть либо числом, которое означает префикс, либо строковым представлением IPv4-адреса. Во втором случае маска интерпретируется как маска сети, если она начинается с ненулевого поля, или как маска хоста, если начинается с нулевого поля. Если маска не указана, считается, что она равна /32.
Например, следующие спецификации адрес эквивалентны: 192.168.1.0/24, 192.168.1.0/255.255.255.0 и 192.168.1.0/0.0.0.255.
Целое число, помещающееся в 32 бита. Оно эквивалентно сети с одним адресом, где адресом сети является address, а маской – /32.
Целое число, упакованное в объект bytes длиной 4, big-endian. Интерпретация аналогична целочисленному адресу.
AddressValueError возникает, если address не является допустимым IPv4-адресом. NetmaskValueError возникает, если маска недопустима для IPv4-адреса.
Если strict равен True и в переданном адресе установлены биты хоста, то возникает ValueError. В противном случае биты хоста маскируются для определения соответствующего сетевого адреса.
Если не указано иное, все методы сетей, принимающие другие объекты сетей/адресов, вызывают TypeError, если версия IP аргумента несовместима с self.
- version¶
- max_prefixlen¶
Обратитесь к соответствующей документации атрибута в IPv4Address.
- is_multicast¶
- is_private¶
- is_unspecified¶
- is_reserved¶
- is_loopback¶
- is_link_local¶
Эти атрибуты истинны для сети в целом, если они истинны как для сетевого адреса, так и для широковещательного адреса
- network_address¶
Сетевой адрес для этой сети. Сетевой адрес и длина префикса вместе однозначно определяют сеть.
- broadcast_address¶
Широковещательный адрес для этой сети. Пакеты, отправленные на широковещательный адрес, должны быть получены каждым хостом в сети.
- hostmask¶
Маска хоста в виде строки.
- with_prefixlen¶
- compressed¶
- exploded¶
Строковое представление сети с маской в префиксной нотации.
with_prefixlen и compressed всегда совпадают с str(network). exploded использует развернутую форму сетевого адреса.
- with_netmask¶
Строковое представление сети с маской в нотации маски сети.
- with_hostmask¶
Строковое представление сети с маской в нотации хостовой маски.
- num_addresses¶
Общее количество адресов в сети.
- prefixlen¶
Длина префикса сети в битах.
- hosts()¶
Возвращает итератор по доступным хостам в сети. Доступные хосты – это все IP-адреса, принадлежащие сети, за исключением самого сетевого адреса и широковещательного адреса сети.
>>> list(ip_network('192.0.2.0/29').hosts()) [IPv4Address('192.0.2.1'), IPv4Address('192.0.2.2'), IPv4Address('192.0.2.3'), IPv4Address('192.0.2.4'), IPv4Address('192.0.2.5'), IPv4Address('192.0.2.6')]
- overlaps(other)¶
True, если данная сеть частично или полностью содержится в other или other полностью содержится в данной сети.
- address_exclude(network)¶
Вычисляет определения сетей, получающиеся в результате удаления заданной сети из данной. Возвращает итератор объектов сетей. Вызывает ValueError, если сеть не полностью содержится в данной сети.
>>> n1 = ip_network('192.0.2.0/28') >>> n2 = ip_network('192.0.2.1/32') >>> list(n1.address_exclude(n2)) [IPv4Network('192.0.2.8/29'), IPv4Network('192.0.2.4/30'), IPv4Network('192.0.2.2/31'), IPv4Network('192.0.2.0/32')]
- subnets(prefixlen_diff=1, new_prefix=None)¶
Подсети, объединение которых образует текущее определение сети, в зависимости от значений аргументов. prefixlen_diff – это величина, на которую должна быть увеличена длина нашего префикса. new_prefix – это желаемый новый префикс подсетей; он должен быть больше нашего префикса. Должен быть задан ровно один из prefixlen_diff и new_prefix. Возвращает итератор объектов сети.
>>> list(ip_network('192.0.2.0/24').subnets()) [IPv4Network('192.0.2.0/25'), IPv4Network('192.0.2.128/25')] >>> list(ip_network('192.0.2.0/24').subnets(prefixlen_diff=2)) [IPv4Network('192.0.2.0/26'), IPv4Network('192.0.2.64/26'), IPv4Network('192.0.2.128/26'), IPv4Network('192.0.2.192/26')] >>> list(ip_network('192.0.2.0/24').subnets(new_prefix=26)) [IPv4Network('192.0.2.0/26'), IPv4Network('192.0.2.64/26'), IPv4Network('192.0.2.128/26'), IPv4Network('192.0.2.192/26')] >>> list(ip_network('192.0.2.0/24').subnets(new_prefix=23)) Traceback (most recent call last): File "<stdin>", line 1, in <module> raise ValueError('new prefix must be longer') ValueError: new prefix must be longer >>> list(ip_network('192.0.2.0/24').subnets(new_prefix=25)) [IPv4Network('192.0.2.0/25'), IPv4Network('192.0.2.128/25')]
- supernet(prefixlen_diff=1, new_prefix=None)¶
Суперсеть, содержащая данное определение сети, в зависимости от значений аргументов. prefixlen_diff – это величина, на которую должна быть уменьшена длина нашего префикса. new_prefix – это желаемый новый префикс суперсети; он должен быть меньше нашего префикса. Должен быть задан ровно один из prefixlen_diff и new_prefix. Возвращает один объект сети.
>>> ip_network('192.0.2.0/24').supernet() IPv4Network('192.0.2.0/23') >>> ip_network('192.0.2.0/24').supernet(prefixlen_diff=2) IPv4Network('192.0.0.0/22') >>> ip_network('192.0.2.0/24').supernet(new_prefix=20) IPv4Network('192.0.0.0/20')
- compare_networks(other)¶
Сравнивает данную сеть с другим. При таком сравнении учитываются только сетевые адреса; биты хоста не учитываются. Возвращает -1, 0 или 1.
>>> ip_network('192.0.2.1/32').compare_networks(ip_network('192.0.2.2/32')) -1 >>> ip_network('192.0.2.1/32').compare_networks(ip_network('192.0.2.0/32')) 1 >>> ip_network('192.0.2.1/32').compare_networks(ip_network('192.0.2.1/32')) 0
- class ipaddress.IPv6Network(address, strict=True)¶
Создаёт определение IPv6-сети. адрес может быть одним из следующих:
Строка, содержащая IP-адрес и необязательную маску, разделённые косой чертой (/). IP-адрес является сетевым адресом, а маска может быть либо числом, которое означает префикс, либо строковым представлением IPv6-адреса. Во втором случае маска интерпретируется как маска сети. Если маска не указана, считается, что она равна /128.
Например, следующие спецификации адреса эквивалентны: 2001:db00::0/24 и 2001:db00::0/ffff:ff00::.
Целое число, помещающееся в 128 бит. Это эквивалентно сети с одним адресом, где сетевым адресом является адрес, а маской – /128.
Целое число, упакованное в объект bytes длиной 16, big-endian. Интерпретация аналогична целочисленному адресу.
Исключение AddressValueError возникает, если адрес не является допустимым IPv6 адресом. Исключение NetmaskValueError возникает, если маска недопустима для адреса IPv6.
Если strict равно True и в указанном адресе установлены биты хоста, то вызывается исключение ValueError. В противном случае биты хоста маскируются для определения соответствующего сетевого адреса.
- version¶
- max_prefixlen¶
- is_multicast¶
- is_private¶
- is_unspecified¶
- is_reserved¶
- is_loopback¶
- is_link_local¶
- network_address¶
- broadcast_address¶
- hostmask¶
- with_prefixlen¶
- compressed¶
- exploded¶
- with_netmask¶
- with_hostmask¶
- num_addresses¶
- prefixlen¶
- hosts()¶
- overlaps(other)¶
- address_exclude(network)¶
- subnets(prefixlen_diff=1, new_prefix=None)¶
- supernet(prefixlen_diff=1, new_prefix=None)¶
- compare_networks(other)¶
Смотрите документацию соответствующего атрибута в IPv4Network
- is_site_local¶
Этот атрибут истинен для всей сети, если он истинен как для сетевого адреса, так и для широковещательного адреса.
21.28.3.3. Операторы¶Operators
Сетевые объекты поддерживают некоторые операторы. Если не указано иное, операторы можно применять только между совместимыми объектами (например, IPv4 с IPv4, IPv6 с IPv6).
21.28.3.3.1. Логические операторы¶Logical operators
Сетевые объекты можно сравнивать с помощью стандартного набора логических операторов, аналогично адресным объектам.
21.28.3.3.2. Итерация¶Iteration
Объекты сети можно перебирать, чтобы получить список всех адресов, принадлежащих сети. При переборе возвращаются все хосты, включая неиспользуемые (для получения используемых хостов используйте метод hosts()). Пример:
>>> for addr in IPv4Network('192.0.2.0/28'):
... addr
...
IPv4Address('192.0.2.0')
IPv4Address('192.0.2.1')
IPv4Address('192.0.2.2')
IPv4Address('192.0.2.3')
IPv4Address('192.0.2.4')
IPv4Address('192.0.2.5')
IPv4Address('192.0.2.6')
IPv4Address('192.0.2.7')
IPv4Address('192.0.2.8')
IPv4Address('192.0.2.9')
IPv4Address('192.0.2.10')
IPv4Address('192.0.2.11')
IPv4Address('192.0.2.12')
IPv4Address('192.0.2.13')
IPv4Address('192.0.2.14')
IPv4Address('192.0.2.15')
21.28.3.3.3. Сети как контейнеры адресов¶Networks as containers of addresses
Сетевые объекты могут выступать в качестве контейнеров адресов. Несколько примеров:
>>> IPv4Network('192.0.2.0/28')[0]
IPv4Address('192.0.2.0')
>>> IPv4Network('192.0.2.0/28')[15]
IPv4Address('192.0.2.15')
>>> IPv4Address('192.0.2.6') in IPv4Network('192.0.2.0/28')
True
>>> IPv4Address('192.0.3.6') in IPv4Network('192.0.2.0/28')
False
21.28.4. Объекты интерфейса¶Interface objects
- class ipaddress.IPv4Interface(address)¶
Создаёт интерфейс IPv4. Значение address такое же, как в конструкторе IPv4Network, за исключением того, что произвольные адреса хостов всегда принимаются.
IPv4Interface является подклассом IPv4Address, поэтому наследует все атрибуты этого класса. Кроме того, доступны следующие атрибуты:
- ip¶
Адрес (IPv4Address) без информации о сети.
>>> interface = IPv4Interface('192.0.2.5/24') >>> interface.ip IPv4Address('192.0.2.5')
- network¶
Сеть (IPv4Network), к которой принадлежит этот интерфейс.
>>> interface = IPv4Interface('192.0.2.5/24') >>> interface.network IPv4Network('192.0.2.0/24')
- with_prefixlen¶
Строковое представление интерфейса с маской в префиксной нотации.
>>> interface = IPv4Interface('192.0.2.5/24') >>> interface.with_prefixlen '192.0.2.5/24'
- with_netmask¶
Строковое представление интерфейса, где сеть указана в виде маски сети.
>>> interface = IPv4Interface('192.0.2.5/24') >>> interface.with_netmask '192.0.2.5/255.255.255.0'
- with_hostmask¶
Строковое представление интерфейса, где сеть указана в виде маски хоста.
>>> interface = IPv4Interface('192.0.2.5/24') >>> interface.with_hostmask '192.0.2.5/0.0.0.255'
- class ipaddress.IPv6Interface(address)¶
Создаёт интерфейс IPv6. Значение address такое же, как в конструкторе IPv6Network, за исключением того, что произвольные адреса хостов всегда принимаются.
IPv6Interface является подклассом IPv6Address, поэтому наследует все атрибуты этого класса. Кроме того, доступны следующие атрибуты:
- ip¶
- network¶
- with_prefixlen¶
- with_netmask¶
- with_hostmask¶
Смотрите документацию соответствующего атрибута в IPv4Interface.
21.28.5. Другие функции уровня модуля¶Other Module Level Functions
Модуль также предоставляет следующие функции уровня модуля:
- ipaddress.v4_int_to_packed(address)¶
Представляет адрес в виде 4 упакованных байтов в сетевом порядке (big-endian). address – это целочисленное представление IPv4-адреса. Исключение ValueError возбуждается, если целое число отрицательное или слишком велико для IPv4-адреса.
>>> ipaddress.ip_address(3221225985) IPv4Address('192.0.2.1') >>> ipaddress.v4_int_to_packed(3221225985) b'\xc0\x00\x02\x01'
- ipaddress.v6_int_to_packed(address)¶
Представляет адрес в виде 16 упакованных байтов в сетевом порядке (big-endian). address – это целочисленное представление IPv6-адреса. Исключение ValueError возбуждается, если целое число отрицательное или слишком велико для IPv6-адреса.
- ipaddress.summarize_address_range(first, last)¶
Возвращает итератор свёрнутого диапазона сетей по первому и последнему IP-адресам. first – первый адрес IPv4Address или IPv6Address в диапазоне, а last – последний адрес IPv4Address или IPv6Address в диапазоне. Исключение TypeError возбуждается, если first или last не являются IP-адресами или имеют разные версии. Исключение ValueError возбуждается, если last не больше first или если версия адреса first не равна 4 или 6.
>>> [ipaddr for ipaddr in ipaddress.summarize_address_range( ... ipaddress.IPv4Address('192.0.2.0'), ... ipaddress.IPv4Address('192.0.2.130'))] [IPv4Network('192.0.2.0/25'), IPv4Network('192.0.2.128/31'), IPv4Network('192.0.2.130/32')]
- ipaddress.collapse_addresses(addresses)¶
Возвращает итератор свёрнутых объектов IPv4Network или IPv6Network. addresses – это итератор объектов IPv4Network или IPv6Network. Исключение TypeError возбуждается, если addresses содержит объекты разных версий.
>>> [ipaddr for ipaddr in ... ipaddress.collapse_addresses([ipaddress.IPv4Network('192.0.2.0/25'), ... ipaddress.IPv4Network('192.0.2.128/25')])] [IPv4Network('192.0.2.0/24')]
- ipaddress.get_mixed_type_key(obj)¶
Возвращает ключ, подходящий для сортировки сетей и адресов. Объекты Address и Network по умолчанию не сортируются; они принципиально разные, поэтому выражение:
IPv4Address('192.0.2.0') <= IPv4Network('192.0.2.0/24')
не имеет смысла. Однако в некоторых случаях может потребоваться, чтобы ipaddress всё равно сортировал их. Если это необходимо, можно использовать эту функцию в качестве аргумента key для sorted().
obj – это объект сети или адреса.
21.28.6. Пользовательские исключения¶Custom Exceptions
Для поддержки более конкретных сообщений об ошибках от конструкторов классов модуль определяет следующие исключения:
- exception ipaddress.AddressValueError(ValueError)¶
Любая ошибка значения, связанная с адресом.
- exception ipaddress.NetmaskValueError(ValueError)¶
Любая ошибка значения, связанная с маской подсети.