модуль IPy (модуль, разработанный для контакта с IP-адресами), выдаст исключение ValueError для недопустимых адресов.
>>> from IPy import IP
>>> IP('127.0.0.1')
IP('127.0.0.1')
>>> IP('277.0.0.1')
Traceback (most recent call last):
...
ValueError: '277.0.0.1': single byte must be 0 <= byte < 256
>>> IP('foobar')
Traceback (most recent call last):
...
ValueError: invalid literal for long() with base 10: 'foobar'
Однако как ответ Dustin, это примет вещи как "4" и "192.168" с тех пор, как упомянуто, это допустимые представления IP-адресов.
при использовании Python 3.3 или позже он теперь включает ipaddress модуль :
>>> import ipaddress
>>> ipaddress.ip_address('127.0.0.1')
IPv4Address('127.0.0.1')
>>> ipaddress.ip_address('277.0.0.1')
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python3.3/ipaddress.py", line 54, in ip_address
address)
ValueError: '277.0.0.1' does not appear to be an IPv4 or IPv6 address
>>> ipaddress.ip_address('foobar')
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python3.3/ipaddress.py", line 54, in ip_address
address)
ValueError: 'foobar' does not appear to be an IPv4 or IPv6 address
Для Python 2, можно получить ту же функциональность с помощью ipaddress при установке python-ipaddress:
pip install ipaddress
Этот модуль совместим с Python 2 и предоставляет очень похожий API тому из ipaddress модуля, включенного в Библиотеку Стандарта Python начиная с Python 3.3. Больше деталей здесь . В Python 2 необходимо будет явно преобразовать строку IP-адреса в unicode: ipaddress.ip_address(u'127.0.0.1')
.
global-set-key
ожидает интерактивную команду. (lambda () (interactive) (forward-line 5))
должно работать.
Кстати, Ch f commandp
- довольно хорошая отправная точка для подобных ошибок .
Правильная форма должна быть такой -
(global-set-key (kbd "M-n") (lambda () (interactive) (forward-line 5)))
Проблема заключалась в том, что вы забыли указать (интерактивный)
(как упомянул Брендан).
Кстати, вы заметите, что я использовал функцию (kbd)
для определения привязки клавиш. Эта функция чрезвычайно полезна, так как привязки клавиш можно использовать практически буквально.