我正在编写一个python扩展来提供对Solaris kstat数据的访问(与运送perl库Sun :: Solaris :: Kstat的精神相同),我有一个关于有条件地返回列表或单个对象的问题。 python用例看起来像:
cpu_stats = cKstats.lookup(module='cpu_stat') cpu_stat0 = cKstats.lookup('cpu_stat',0,'cpu_stat0')
正如它当前实现的那样,lookup()返回所有匹配的kstat对象的列表。第一种情况会产生一个对象列表(尽可能多的是CPU),第二种情况会完全指定一个kstat,并返回一个包含一个kstat的列表。
我的问题是,当只有一个匹配时,返回单个对象的形式很差,而当有多个匹配时,返回一个列表?
感谢您的周到答复!我的python-fu很弱但是因为像你这样的人而变得越来越强大。
答案 0 :(得分:7)
“我的问题是,当只有一个匹配时返回单个对象的形式很差,而当有很多匹配时返回一个列表?”
返回不一致的类型是不好的形式。
返回一致类型:kstat列表。
大多数Pythonist不喜欢使用type(result)
来确定它是kstat还是kstats列表。
我们宁愿以简单,一致的方式检查列表的长度。
此外,如果长度取决于系统信息,则API方法可能会提供此元数据。
请查看DB-API PEP,了解有关如何处理类似查询的建议和想法。