测试代码,使得没有函数将kwarg称为arg

时间:2015-06-06 10:22:45

标签: python python-2.7

在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中是否可行?

1 个答案:

答案 0 :(得分:2)

你将你的问题标记为python-2.7但是为了将来的观众我会说在python 3中我们现在有keyword-only arguments功能允许定义这样的函数:

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/