如何查看功能参数的类型?例如,
def hello(x):
# check if x is tuple
# check if x is dictionary.
...
isinstance(x, type(()))
isinstance(x, type({}))
答案 0 :(得分:7)
你没有。
你永远不应该不确定python中的东西类型;它基本上不可能准确检查。虽然可以进行一些天真的表面级检查,但问题是python非常灵活。你的函数不应该关心它是否通过了一个dict或类似于dict的东西,而解决这个问题的最好办法就是不要检查它。
真正的问题是“为什么我不知道某事物的类型是什么?”
答案 1 :(得分:5)
如果您确实要检查,可以使用isinstance()
另请参阅此comparison of type checking methods以及您不应该检查的原因!
答案 2 :(得分:2)
Python的最佳做法是使用鸭子打字:如果它像鸭子一样走路,像鸭子一样呱呱叫,就像鸭子一样对待它。所以,你关心的不是某个东西是一个词典还是一个列表:你关心你是否可以对待(在鸭子类比中,你不关心它是否是人类,只要它像鸭子一样走路,像鸭子一样呱呱叫。)
例如,如果要提取元素:
def get_element(obj, index):
return obj[index]
只要您传递给它的对象理解[index]
的含义,就会起作用。
现在,您实际上可以使用isinstance
来检查对象是否是类的实例,但这通常用于内省目的。我偶尔使用它而不是鸭子打字,后来才后悔并回到Python的最佳实践。
所以,我建议你看看你想要实现的目标,看看你是否可以使用鸭子打字。
干杯。