【发布时间】:2014-01-29 16:42:38
【问题描述】:
我正在构建 SQL 查询的正则表达式,并将其传递给 Python 函数。这是我目前正在做的事情(iterable 是传递给函数的变量):
if isinstance(iterable, (list, tuple, set)):
app = '|'.join(iterable)
我希望能够测试一个抽象(参见集合模块的 ABC),这意味着它是一个容器,而不是 basestring。 (这是可迭代的!)
有没有办法改进以上内容?
【问题讨论】:
-
isinstance(iterable, collections.Container) and not isinstance(iterable, str)? -
抱歉,正在回复之前声称
iterable是本机类型的评论。集合中有Iterable,但没有iterableafaik。评论被删除了,所以我猜他们是混淆了不同的语言? -
我会这样做:
if not isinstance(iterable, basestring): app = '|'.join(iterable)。不要检查特定的序列......让它进行鸭式打字,只记录你想要一个可迭代的字符串或字符串。 -
@Bakuriu 这确实发生在我身上,但你应该把它写下来。
标签: python arrays string set typechecking