我目前正在测试我的一个类,它在pygeoip的帮助下设置变量。
当数据库中找不到任何内容时, org_by_addr
返回None
:
seek_org = self._seek_country(ipnum)
if seek_org == self._databaseSegments:
return None
country_name_by_addr
函数返回空字符串。
这会强制我检查返回是否为None
,然后将其设置为''
以统一显示变量。
有人知道,当数据库中没有条目时,给出不同回报的原因是什么?
答案 0 :(得分:0)
除了明显的"变量一致性",将NoneType更改为空字符串有什么意义?有一个原因
bool ('') == bool (None) == False
在我看来,这是一种风格差异。但是,当包具有不同的返回类型时,它可以提示几件事:
- 如果函数返回None,你可能会猜到如果在数据库中找到匹配项,该函数将返回一个实例化对象。 -if而不是返回None,该函数返回一个空字符串,至少可以指望该函数的输出在数据库中找到条目时返回有效字符串。 - 如果函数返回0而不是None,你可能会猜到如果在数据库中找到一个条目,该函数将返回某种数字
所以,实际上它主要是以某种方式告知用户有效的返回类型。
我的最终建议是废除传统的"类型"使用Python时。我的意思是C语言的打字。在python中有一个原因,你可以说:
if result:
#some code
并且它适用于几种不同的"类型"。