Я пытаюсь понять, как работает некоторый код из руководств по Python netaddr на https://pythonhosted.org/netaddr/tutorial_01.html. В частности, следующий учебник.
Сводный список адресов и подсетей
Еще одной полезной операцией является возможность суммировать группы IP-подсетей и адресов, объединяя их, где это возможно, для создания наименьшего возможного списка подсетей CIDR.
Вы делаете это в netaddr, используя функцию cidr_merge().
Сначала мы создаем список IP-объектов, который содержит хорошее сочетание отдельных адресов и подсетей, а также некоторые строковые значения IP-адресов для хорошей оценки. Чтобы сделать вещи более интересными, также добавлены некоторые адреса IPv6.
>>> ip_list = [ip for ip in IPNetwork('fe80::/120')] >>> ip_list.append(IPNetwork('192.0.2.0/24')) >>> ip_list.extend([str(ip) for ip in IPNetwork('192.0.3.0/24')]) >>> ip_list.append(IPNetwork('192.0.4.0/25')) >>> ip_list.append(IPNetwork('192.0.4.128/25')) >>> len(ip_list) 515 >>> cidr_merge(ip_list) [IPNetwork('192.0.2.0/23'), IPNetwork('192.0.4.0/24'), IPNetwork('fe80::/120')]
Я немного смущен различными доступными вариантами. В чем разница между ip_list.extend([str(ip) for ip in IPNetwork('192.0.3.0/24')])
и ip_list.append(IPNetwork('192.0.4.0/25'))
.
Если я не хочу начинать список с IPv6 (fe80::/120
) и вместо этого хочу использовать IPv4 (192.0.4.0/24
), каким будет синтаксис. Будет ли это так же просто, как следующее?
ip_list = IPNetwork('192.0.4.0/25')
Спасибо.