获取python中的参数类型

时间:2010-02-09 06:11:08

标签: python types arguments

我正在学习python。我喜欢使用help()或interinspect.getargspec来获取shell中函数的信息。但无论如何我可以得到函数的参数/返回类型。

4 个答案:

答案 0 :(得分:4)

如果你的意思是在函数的某个调用期间,函数本身可以通过在每个函数上调用type来获取其参数的类型(并且肯定会知道它返回的类型)。

如果你的意思是来自函数外部,那么:函数可以用任何类型的参数调用 - 一些这样的调用会产生错误,但是没有办法知道它们将是先验的。

参数可以选择在Python 3中进行修饰,这种装饰的一种可能用途是表达参数的类型(和/或其他约束),但语言和标准库没有提供如何指导装饰可能会被使用。您也可以采用一种标准,即在函数的docstring中以结构化方式表示这些约束,这样可以适用于任何版本的Python。

答案 1 :(得分:2)

在3.4.2文档https://docs.python.org/3/library/inspect.html中,提到了你真正需要的东西(即获取函数的参数类型)。

首先需要定义你的函数:

def f(a: int, b: float, c: dict, d: list, <and so on depending on number of parameters and their types>):

然后你可以使用formatargspec(*getfullargspec(f))返回一个漂亮的哈希:

(a: int, b: float)

答案 2 :(得分:1)

有一个名为type()的功能 Here are the docs

您无法事先告诉函数将返回什么类型

>>> import random
>>> def f():
...  c=random.choice("IFSN")
...  if c=="I":
...   return 1
...  elif c=="F":
...   return 1.0
...  elif c=="S":
...   return '1'
...  return None
... 
>>> type(f())
<type 'float'>
>>> type(f())
<type 'NoneType'>
>>> type(f())
<type 'float'>
>>> type(f())
<type 'int'>
>>> type(f())
<type 'str'>
>>> type(f())
<type 'float'>
>>> type(f())
<type 'float'>
>>> type(f())
<type 'NoneType'>
>>> type(f())
<type 'str'>

通常很好的做法是只从函数中返回一种类型的对象,但Python不强制它在你身上

答案 3 :(得分:0)

简单方法是使用 bpython

Python学习变得简单&amp;又好玩!

alt text http://www.noiseforfree.com/bpython/img/bpython01.png