【发布时间】:2018-12-03 08:27:44
【问题描述】:
我要检查一个 IP 地址是私有的还是保留的(例如多播地址空间)。
我的 Methode 目前看起来像这样:
def __IP4_POR(ip):
if(ipaddress.ip_address(ip).is_private or
ipaddress.ip_address(ip).is_reserved or
ipaddress.ip_address(ip).is_multicast): return str(1)
else: return str(0);
所以问题是如果 IP 在 100.64.0.0/10 范围内,python 编译器将返回 0。
问题是:为什么编译器返回一个 0?因为当我查看 IANA IPv4 专用地址注册表时,我看到 IP 地址必须根据 RFC6598 IETF 保留,并且编译器应该返回 1 而不是 0。
这可能是 python 库中的错误吗?
希望你能帮我解释一下。
谢谢!
编辑:我使用的是 Python 3.6.5
【问题讨论】:
-
你为什么返回字符串而不是布尔值
True或False? -
因为其他方法正在处理字符串 :'D 但这不是目前的主要问题^^
-
你应该把它修好,然后去掉分号,它不漂亮。
-
是的,但代码优化是我列表中的最后一点。目前我需要“保留”方法的功能。但是谢谢你的积分! :)
标签: python python-3.x python-2.7 ip ip-address