Python列表函数参数名称

Bem*_*mmu 34 python arguments function

有没有办法获取一个函数需要的参数名称?

def foo(bar, buz):
    pass

magical_way(foo) == ["bar", "buz"]
Run Code Online (Sandbox Code Playgroud)

Ale*_*lli 54

使用Python标准库中的inspect模块(最干净,最可靠的方式来执行内省).

具体来说,inspect.getargspec(f)返回的名称和默认值f的参数-如果你只是想名字和不关心特殊形式*a,**k,

import inspect

def magical_way(f):
    return inspect.getargspec(f)[0]
Run Code Online (Sandbox Code Playgroud)

完全符合您的要求.

  • 你也可以使用`return inspect.getargspec(f).args` (8认同)
  • 也许你可以编辑这个,因为现在不推荐使用getargspec,而是更喜欢inspect.signature() (8认同)
  • @juanIsaza`inspect.signature(f).parameters` (6认同)
  • 从 Python 3.6 开始,inspect.getargspec 已被弃用。相反,应该使用inspect.signature。有谁知道怎么用吗,谢谢 (2认同)

Joh*_*ooy 12

>>> import inspect
>>> def foo(bar, buz):
...     pass
... 
>>> inspect.getargspec(foo)
ArgSpec(args=['bar', 'buz'], varargs=None, keywords=None, defaults=None)
>>> def magical_way(func):
...     return inspect.getargspec(func).args
... 
>>> magical_way(foo)
['bar', 'buz']
Run Code Online (Sandbox Code Playgroud)

  • +1 提供 `magical_way()` 函数。 (2认同)