我想有一个函数,该函数将对象包装在一个可迭代的对象中,以便允许
该函数的客户端对待集合和单个对象的方式相同,我做了以下工作:

 def to_iter(obj):
     try:
         iter(obj)
         return obj
     except TypeError:
         return [obj]

有没有pythonic的方法可以做到这一点?如果obj是一个字符串,而我想将字符串视为
单个对象?我应该使用isinstance而不是iter吗?

最佳答案

您的方法很不错:尽管它将字符串对象转换为可迭代对象

try:
    iter(obj)
except TypeError, te:
    obj = list(obj)

您可以检查的另一件事是:
if not hasattr(obj, "__iter__"): #returns True if type of iterable - same problem with strings
    obj = list(obj)
return obj

要检查字符串类型:
import types
if not isinstance(obj, types.StringTypes) and hasattr(obj, "__iter__"):
    obj = list(obj)
return obj

10-07 19:33
查看更多