如何在python中确定函数参数类型?

时间:2016-09-29 17:14:47

标签: python types

例如,我的文档库很少。我有一个对象,我想知道某个方法接受的参数的类型是什么。

在IPython中我可以运行

In [28]: tdb.getData?
Signature: tdb.getData(time, point_coords, sinterp=0, tinterp=0, data_set='isotropic1024coarse', getFunction='getVelocity', make_modulo=False)
Docstring: <no docstring>
File:      ~/.local/lib/python3.5/site-packages/pyJHTDB/libJHTDB.py
Type:      method

但它没有给我参数的类型。我不确切知道point_coords的类型是什么。

1 个答案:

答案 0 :(得分:2)

通常,Python中的函数接受任何类型的参数,因此您无法定义它所期望的类型。

尽管如此,该函数可能确实对接收到的对象做了一些隐含的假设。

以此功能为例:

def is_long(x):
    return len(x) > 1000

此函数接受哪种类型的参数x?任何类型,只要它定义了长度。

因此,它可以采用字符串,列表,dict或您创建的任何自定义对象,只要它实现__len__即可。但它不会取整数。

is_long('abcd')  # ok
is_long([1, 2, 3, 4])  # ok
is_long(11)  # not ok

回答这个问题:你怎么知道这个功能有什么假设?

  • 阅读文档
  • 阅读文档字符串(try help(funcname)
  • 猜测:将任何参数传递给它,看看它是如何失败的。如果它因 AttributeError而失败:X实例没有属性&#39; get_value&#39; ,则需要get_value的内容。