擅长:python、mysql、java
<p>我认为枚举90%的大小写就和你将得到的一样好(如果使用python3,用str替换basestring)。可能还需要考虑如何处理生成器表达式和类似的ilk(同样,如果使用Py3,请跳过xrangor):</p>
<pre><code>generator = type((i for i in xrange(0)))
enumerator = type(enumerate(range(0)))
xrangor = type(xrange(0))
is_ordered = lambda seq : isinstance(seq,(tuple, list, collections.OrderedDict,
basestring, generator, enumerator, xrangor))
</code></pre>
<p>如果呼叫者开始使用itertools,那么还需要添加islice、imap、groupby返回的itertools类型。但这些特殊情况的数量确实开始指向<a href="http://martinfowler.com/bliki/CodeSmell.html" rel="nofollow">code smell</a>。在</p>