Tag: typechecking

什么是检查一个Pythonvariables的types的最佳(惯用)方式?

我需要知道Python中的variables是string还是字典。 下面的代码有什么问题吗? if type(x) == type(str()): do_something_with_a_string(x) elif type(x) == type(dict()): do_somethting_with_a_dict(x) else: raise ValueError 更新 :我接受了avisser的回答(虽然我会改变主意,如果有人解释为什么isinstance优于type(x) is )。 但是,由于nakedfanatic提醒我,使用字典(作为一个case语句)通常比if / elif / else系列更清晰。 让我详细说明我的用例。 如果一个variables是一个string,我需要把它放在一个列表中。 如果是字典,我需要一个唯一值列表。 以下是我想到的: def value_list(x): cases = {str: lambda t: [t], dict: lambda t: list(set(t.values()))} try: return cases[type(x)](x) except KeyError: return None 如果isinstance是首选的,你将如何写这个value_list()函数?