我目前正在测试我的一个类,它在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
让它在不同的"类型"中有效