首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python只使用必要的参数调用函数?

python只使用必要的参数调用函数?
EN

Stack Overflow用户
提问于 2013-11-25 16:15:27
回答 2查看 96关注 0票数 0

假设我有一个函数:

代码语言:javascript
运行
复制
def omni(self, func, *args, **kwargs):

它总是调用func

但是,func的参数可以是任意组合。例如

代码语言:javascript
运行
复制
def func(self):
    # omni should only pass in self

def func():
    # omni should pass in nothing

def func(foo, key='foo'):
    # omni should pass in a foo param and a key if supplied one

def func(*args, **kwargs):
    # omni should pass in everything

有没有办法只把必要的参数从omni传递给func?也就是说,上述情况有可能吗?

例如。

代码语言:javascript
运行
复制
def foo(m):
    pass

obj.omni(foo, m, a=1)
# this should call
foo(m)

def foo(self, **kwargs):
    pass

obj.omni(foo, m, 1, b=2)
# this should call
foo(self, b=2)
EN

回答 2

Stack Overflow用户

发布于 2013-11-25 16:17:57

代码语言:javascript
运行
复制
def omni(self=None, func=None, *args=None, **kwargs=None)

您应该如上所述使用可选参数。请看这里,http://www.diveintopython.net/power_of_introspection/optional_arguments.html

票数 0
EN

Stack Overflow用户

发布于 2013-11-25 16:47:43

这听起来很复杂。

您必须检查func,对于func是对象的情况,还要检查func.__call__

一个实数函数有一个func_defaults和一个func_code,后者又有一个co_argcount和一个co_flags

在他们的帮助下,你可以检查

  • 函数有多少个参数
  • 其中有多少个参数有默认值,如果允许使用*args / **kwargs则为
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20187580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档