测试代码,使没有函数将kwarg作为参数调用



在python中,可以检查函数是否进行函数调用,其中命名参数作为位置参数调用?

例如:

def a(pos_arg, nam_arg=None, nam_arg2=None):
    return "whatever"
def b():
    return a(1, 2, nam_arg2="whatever")

这里,函数b调用函数a,但第二个参数是命名参数,它被作为位置参数调用。当对象继承开始起作用时,这可能会导致令人困惑的问题。

最好是:

def b():
    return a(1, nam_arg=2, nam_arg2="whatever")

为了测试的目的(因为这在我的项目中通常是不好的代码),我想知道函数b()是否会进行这样的调用。

这在python中可能吗?

你把你的问题标记为python-2.7,但为了将来的观众,我想说的是,在python 3中,我们现在有了仅关键字参数的功能,允许定义这样的函数:

def func(pos_arg, *, kw_only_arg):
    pass

在这种情况下,kw_only_arg只允许用作关键字参数。如果你不能使用python 3,那么这里有一个食谱可以帮助你:http://code.activestate.com/recipes/578993-keyword-only-arguments-in-python-2x/