如何在python中确定函数参数类型?
例如,我有一个文档记录很差的库。我从中得到了一个对象,我想知道某些方法接受的参数类型是什么 在IPython我可以跑步如何在python中确定函数参数类型?,python,types,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 docstri
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
[28]中的:tdb.getData?
签名:tdb.getData(时间、点坐标、sinterp=0、tinterp=0、数据集='Isomic1024Coarse',getFunction='getVelocity',make_modulo=False)
文档字符串:
文件:~/.local/lib/python3.5/site-packages/pyJHTDB/libJHTDB.py
类型:方法
但它并没有给出论点的类型。我不知道点坐标的确切类型通常,Python中的函数接受任何类型的参数,因此您无法定义它所期望的类型 不过,函数可能确实对接收到的对象做出了一些隐含的假设 以这个函数为例:
def is_long(x):
return len(x) > 1000
此函数接受哪种类型的参数x
?任何类型,只要定义了长度即可
因此,它可以接受字符串、列表、dict或您创建的任何自定义对象,只要它实现\uuu len\uuu
。但不需要整数
is_long('abcd') # ok
is_long([1, 2, 3, 4]) # ok
is_long(11) # not ok
回答以下问题:如何判断函数的假设
- 阅读文档
- 阅读文档字符串(请尝试
)帮助(funcname)
- 猜猜:把任何论点传递给它,看看它是如何失败的。如果使用AttributeError失败:X实例没有属性“get\u value”,它需要使用
的内容get\u value
def is_long(x):
return len(x) > 1000
此函数接受哪种类型的参数x
?任何类型,只要定义了长度即可
因此,它可以接受字符串、列表、dict或您创建的任何自定义对象,只要它实现\uuu len\uuu
。但不需要整数
is_long('abcd') # ok
is_long([1, 2, 3, 4]) # ok
is_long(11) # not ok
回答以下问题:如何判断函数的假设
- 阅读文档
- 阅读文档字符串(请尝试
)帮助(funcname)
- 猜猜:把任何论点传递给它,看看它是如何失败的。如果使用AttributeError失败:X实例没有属性“get\u value”,它需要使用
的内容get\u value
point\u coords
传递。除非它使用新的类型注释功能,也就是说,阅读源代码并查找相关注释以及它们试图对参数执行的操作,或者查找用法示例。Github页面显示查看函数,这似乎表明点坐标
应该是一个float32数据类型的Nx3 NumPy数组。您可以尝试在interactive(?
)中使用两个问号而不是一个问号来查看函数定义。Python是动态类型的(),因此任何“看起来”像预期类型的对象都可以用于计算,但这会使您的任务变得困难。您需要浏览代码(可能会找到其他使用者)以了解需求是什么。如果它是本机python函数,则在C意义上没有严格的名称类型。您甚至可以将火腿三明治作为point\u coords
传递。除非它使用新的类型注释功能,也就是说,阅读源代码并查找相关注释以及它们试图对参数执行的操作,或者查找用法示例。Github页面显示查看函数,这似乎表明点坐标
应该是一个float32数据类型的Nx3 NumPy数组。您可以尝试在interactive(?
)中使用两个问号而不是一个问号来查看函数定义。Python是动态类型的(),因此任何“看起来”像预期类型的对象都可以用于计算,但这会使您的任务变得困难。您需要浏览代码(可能会找到其他用户)以了解需求是什么。