Python 获取部分函数的参数

发布于 2024-11-09 04:25:42 字数 303 浏览 4 评论 0原文

我想做一些类似于这里要求的事情 获取内部参数名称列表python 函数,但使用部分函数。 IE。我需要获取部分函数的可能参数。我可以使用以下方式获取关键字参数:

my_partial_func.keywords

但我目前正在努力获取非关键字参数。对于这种特殊情况,检查模块也不会产生任何结果。任何建议都会很棒。

I am looking to do something similar to what was asked here Getting list of parameter names inside python function, but using partial functions. ie. I need to get the possible arguments for a partial function. I can get the keyword arguments using:

my_partial_func.keywords

but I am currently struggling to get the non-keyword arguments. The inspect module also yields nothing for this particular case. Any suggestions would be great.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

巡山小妖精 2024-11-16 04:25:42

.args 包含传递给分部函数的参数。如果您想获取原始函数所需的参数,请使用您在 .func 属性上链接的 inspect 解决方案。

您可以通过在 functools.partial 对象上调用 dir 来找到这一点:

>>> dir(x)
['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'args', 'func', 'keywords']

.args contains the arguments passed to the partial function. If you want to get the arguments that the original function expects, use the inspect solution you linked on the .func attribute.

You can find this out by calling dir on a functools.partial object:

>>> dir(x)
['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'args', 'func', 'keywords']
无可置疑 2024-11-16 04:25:42

您可以使用partial.func.__code__.co_varnames:

import functools

p = functools.partial(lambda a, b: a > b, {a: 1})

print(p.args)
# ({'a': 1},)

print(p.func.__code__.co_varnames)
# ('a', 'b')

You can use partial.func.__code__.co_varnames:

import functools

p = functools.partial(lambda a, b: a > b, {a: 1})

print(p.args)
# ({'a': 1},)

print(p.func.__code__.co_varnames)
# ('a', 'b')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文