为什么get_name_by_addr返回而org_by_addr返回"无"?



我目前正在测试我的一个类,它在pygeoip的帮助下设置变量。

org_by_addr返回None时,没有在数据库中找到:

seek_org = self._seek_country(ipnum)
if seek_org == self._databaseSegments:
    return None

country_name_by_addr函数返回一个空字符串。

这迫使我检查返回是否为None,然后将其设置为''以使变量一致。

有谁知道,当数据库中没有条目时,给出不同返回的原因是什么?

除了明显的"变量一致性"之外,将NoneType更改为空字符串的意义是什么?

bool ('') == bool (None) == False

在我看来,这是文体上的差异。然而,当一个包有这样不同的返回类型时,它可以暗示一些事情:

-如果函数返回None,您可能会猜到,如果在数据库中找到匹配,该函数将返回一个实例化对象。如果函数不是返回None,而是返回一个空字符串,那么当在数据库中找到一个条目时,您至少可以期望该函数的输出返回一个有效的字符串。如果函数返回0而不是None,你可以猜测如果在数据库中找到一个条目,该函数将返回某种数字

所以它主要是告诉用户有效的返回类型是什么

我最后的建议是在使用Python时摒弃传统的"类型"思想。我指的是C语言的输入哲学。在python中,你可以说:

是有原因的
if result:
    #some code

让它在不同的"类型"中有效

相关内容

  • 没有找到相关文章

最新更新