繁体   English   中英

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

[英]How to determine function parameter type in python?

例如,我有一个文献记录不佳的图书馆。 我有一个对象,我想知道某些方法接受的参数类型是什么。

在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的类型是point_coords

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

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

以这个功能为例:

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

此函数接受哪种类型的参数x 任何类型,只要已定义长度即可。

因此,只要实现__len__ ,它就可以采用字符串,列表,字典或任何自定义对象。 但是,它不需要整数。

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

要回答这个问题:您如何分辨该函数所做的假设?

  • 阅读文档
  • 读取文档字符串(尝试help(funcname)
  • 猜测:将任何参数传递给它,看看它如何失败。 如果失败并出现AttributeError:X实例没有属性'get_value' ,则它期望使用get_value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM