网络工程师 Python 基础语法-常用内置模块(第3节,ipaddress)
发布网友
发布时间:2024-10-01 11:39
我来回答
共1个回答
热心网友
时间:2024-11-14 00:40
大家好,我又来了!
对于网络工程师,我们几乎天天都要接触IP地址。早前我有文章介绍过IP、MAC地址的处理,主要使用了netaddr模块。关于IP地址的处理,常用的还有ipaddress模块,本文我们就来讨论一下它。
本专栏简介及目录入口,如果你不知道从何读起,建议从这篇《目录》开始,链接如下:
本文部分参考书籍《Python for network engineers》,纯英文,推荐移步阅读,链接如下:
一、ipaddress简介
见名知意,通过ipaddress字眼我们应该可以很轻松地获悉这个模块与IP地址有关,从Python3.3开始,这个模块就被Python官方纳入标准库行列中。因此,使用它无需额外安装,直接import即可。
二、ipaddress.ip_address
请记住,Python无处不类与对象。ipaddress.ip_address函数可以用来很方便地创建一个IPv4或IPv6地址对象。
三、ipaddress.ip_network
有别于ipaddress.ip_address函数,ipaddress.ip_network函数可以创建IPv4或IPv6的网段对象。
四、ipaddress.ip_interface
ipaddress.ip_interface函数可直接让你创建一个带掩码的IP地址。
五、使用示例
我们可以用这样的一个模块,来进行一些IP地址的检查操作,例如判断一个地址到底是主机号呢,还是网络号。结合自定义函数,我们轻松地实现这么一个小功能。
六、本文总结
ipaddress模块是比较轻巧的,满足一些IP地址信息的简单处理,当然,它的功能并没有netaddr或IPy那么强大,但在很多场景下已经是足够使用了。
学习一个新模块,我们通常都按照创建对象,探寻对象的属性与方法来进行。这基本是一个常用且“屡试不爽”的方法。在这个过程中,我们要善于使用dir、type、help、print等内置函数进行快速自助查询(当然也可以查模块文档)。 遇到生成器、迭代器等,我们会很自然的想到list()函数,for循环等Python常规手法,从而把数据玩转起来。