1

将被调用函数的数据委托给另一个函数很简单:

def test2(a, b):
    huh = locals()
    print huh

def test(a, b='hoho'):
    test2(**locals())

但是,locals()包含self何时调用方法,并且在尝试在单行中对方法调用执行相同操作时,这会妨碍:

class X(object):
    def test2(self, a, b):
        huh = locals()
        print huh

    def test(self, a, b='hoho'):
        self.test2(**locals()) # no workie
        test2(**locals()) # no workie either
4

2 回答 2

5

您根本不应该locals()在这里使用;使用*argsan**kw来捕获参数并将其传递:

def test(self, *args, **kw):
    self.test(*args, **kw)
于 2013-08-16T20:40:52.887 回答
2

前段时间我写了一个函数,它可以内省被调用的函数,并且只为实际存在的参数传递命名参数;看到这个答案

但总的来说,我和 Martijn 在一起,通过locals()其他地方闻起来是个坏主意。

于 2013-08-16T20:47:28.537 回答