列出Python中函数所期望的变量?

gab*_*ous 3 python variables metaprogramming function

我想知道是否有可能在调用它之前列出Python函数所期望的变量,以便从包含大量变量的更大的dict传递预期的变量.

我在网上搜索但找不到任何东西.但是,python解释器可以显示预期变量的列表,所以肯定必须有一些方法在脚本中执行它?

Mar*_*ers 10

你可以使用这个inspect.getargspec()功能:

import inspect

argspec = inspect.getargspec(somefunction)
Run Code Online (Sandbox Code Playgroud)

argspec 是一个带有4个元素的命名元组:

  • 带有参数名称的列表
  • catchall *args参数的名称(如果已定义)(None否则)
  • catchall **kwargs参数的名称(如果已定义)(None否则)
  • 具有关键字参数的默认值的元组; 他们选择论证的最后一个要素; 通过默认值元组的长度匹配这些.

演示:

>>> import inspect
>>> def foo(bar, baz, spam='eggs', *monty, **python): pass
... 
>>> inspect.getargspec(foo)
ArgSpec(args=['bar', 'baz', 'spam'], varargs='monty', keywords='python', defaults=('eggs',))
Run Code Online (Sandbox Code Playgroud)

  • 假设`len(argspec.defaults)`是3,那么这些默认值属于`argspec.args`中列出的最后三个参数名.在我的例子中,`argspec.defaults`中只有***项,所以它属于`argspec.args`,''spam'`中的最后一项.如果有2,那么它们将成为''baz'`和''spam'`的默认值等. (3认同)