检查变量是否是一对类型? (字符串或列表)

Check if variable is either a couple types? (str or list)

我知道如果我想检查变量 x 是否是一个 str 我会做

if type(x) is str:

但是我如何检查 x 是字符串还是列表?所以我可以在不添加另一个 if branch

的情况下做到这一点
if type(x) is (str, list):
     pass
else:
     raise SomeError
type(x) in (str, list)

isinstance(x, (str, list))

两者在语义上并不相同。阅读文档中的 isinstance() 函数。

if isinstance(x, list) or isinstance(x, list):

或针对多个不同类型

if any(isinstance(x, i) for i in [list, tuple, string]):

或者如果您想查看它是否是任何类型的可迭代对象

if hasattr(x, '__iter__'):

使用类似于下面的 in 关键字:

if type(x) in (str, list):

或使用isinstance内置函数:

if isinstance(x, (str, list)):