3.4的IP地址模块的Python2.6后台端口

py2-ipaddress的Python项目详细描述


这是python 3.4ipaddress模块的python 2.6后台端口。

有关详细信息,请参阅official Python 3.4 documentation 在模块上。

来自python 3.4的ipaddress模块的更改

由于python 2没有不同的bytes类型,因此使用bytearray。 而不是“打包”地址表示。另外,因为 python 2.7的functools没有python 3.2的lru_cache, 不会对is_private和^{tt8}执行缓存$ 属性;这应该是python 3.3的一个小问题ipaddress 也没有使用lru_cache。后端口的行为应该相同 在所有其他方面。

Py2 IP地址3.4的更改

Python2.6支持和错误修复。

与Py2 IP地址2.0.1及更早版本的更改

因为python 2不区分bytesstrlike python 3有,版本2.0.1和更早的py2 ipaddress试图 将str参数解释为两者并做“正确”的事情。

不幸的是,这导致py2 ipaddress中出现了令人惊讶的行为:

>>> ipaddress.ip_address('test.example.org')
IPv6Address('7465:7374:2e65:7861:6d70:6c65:2e6f:7267')

当然,ipaddress模块不执行dns解析。 相反,参数被解释为字节字符串(长度为16),并且 已将逐位转换为IPv6地址。在python 3中,ipaddress 正确地拒绝这样的构造函数参数(除非b前缀 用于将文本显式标记为字节字符串)。

更糟糕的是,并不总是有一个正确的解释。Python3 示例:

>>> ipaddress.ip_address('::1234:5678:9abc')
IPv6Address('::1234:5678:9abc')
>>> ipaddress.ip_address(b'::1234:5678:9abc')
IPv6Address('3a3a:3132:3334:3a35:3637:383a:3961:6263')

在python 2中无法区分这两个调用。作为一个 结果,py2 ipaddress 3.4对所有字节字符串使用bytearray,并且 str仅用于文本字符串:

>>> ipaddress.ip_address('::1234:5678:9abc')
IPv6Address('::1234:5678:9abc')
>>> ipaddress.ip_address(b'::1234:5678:9abc')
IPv6Address('::1234:5678:9abc')
>>> ipaddress.ip_address(bytearray('::1234:5678:9abc'))
IPv6Address('3a3a:3132:3334:3a35:3637:383a:3961:6263')

许可证

ipaddress模块(原始和此后台端口)已获得许可 在Python Software Foundation License version 2下面。

对Python2.6兼容性所做的修改在此发布到 作者的公共领域。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Hibernate在实体映射中出现重复列   java如何用FTP目录填充JTree?   java无法解析引用本地ejbref。两个EJB模块之间的通信   java如何在主文件夹的文件和子文件夹中进行更改?   java如何在接到电话时“正确”发送短信?   java有没有一种方法可以在javafx的桌面浏览器中使用saml对用户进行身份验证   java如何通过命令行开始在eclipse中运行?   带有远程数据库的java安卓应用程序   java替换行输入。基于关闭标志的txt文件   爪哇科特林。如何将十进制数的结尾设置为零?   java AgentInitializationException:已加载代理JAR,但代理在尝试注入JAR文件时未能初始化   Java:nextInt()验证不起作用   垃圾收集使用Java9G1GC,系统。应用程序加载时未执行gc()。为什么?   java将Spring引导应用程序部署到Tomcat服务器   java在创建新方法的同时创建新对象,这怎么可能呢?   使用HFileOutputFormat2时发生java ClassCastException   java应用程序未从编辑文本中获取值,似乎正在跳过行