Python Glossary English

Python 3.3+ipaddressфункция

ipaddress.ip_address()

фабричные функции

Создаёт IPv4Address или IPv6Address из строки, целого числа или байтов — версию протокола функция определяет сама.

Синтаксис

ipaddress.ip_address(address)

Ошибочная строка даёт обычный ValueError, а не AddressValueError: фабрика не знает, какую версию вы имели в виду, поэтому except AddressValueError вокруг неё не сработает никогда. Целое число трактуется как номер адреса: ip_address(1) — это 0.0.0.1, а числа от 2**32 уже дают IPv6. Пробелы по краям и ведущие нули в октетах ('010.0.0.1') отвергаются — строку из ввода сначала очищают strip().

Примеры

import ipaddress
print(repr(ipaddress.ip_address('192.168.0.1')))  # → IPv4Address('192.168.0.1')
print(repr(ipaddress.ip_address('::1')))  # → IPv6Address('::1')
print(repr(ipaddress.ip_address(1)))  # → IPv4Address('0.0.0.1') — число, а не строка
import ipaddress
def is_ip(text):
    try:
        ipaddress.ip_address(text.strip())
        return True
    except ValueError:  # AddressValueError здесь не прилетит
        return False
print(is_ip(' 10.0.0.1 '), is_ip('192.168.0.256'), is_ip('010.0.0.1'))  # → True False False

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности