代码之家  ›  专栏  ›  技术社区  ›  andrew

通过指向此函数的指针获取函数参数值?

  •  1
  • andrew  · 技术社区  · 6 年前

    我想通过指向函数的指针来获取函数参数的值。

    def cons(a, b):
        def pair(f):
            return f(a, b)
        return pair
    
    def car(cons):
        # local_a = cons.a
        # return local_a
        pass
    
    if __name__ == '__main__':
        assert car(cons(3, 4)) == 3
    
    3 回复  |  直到 6 年前
        1
  •  0
  •   user2357112    6 年前

    Church pair

    cons(3, 4) f f(3, 4) 3

    def car(pair):
        def firstarg(x, y):
            return x
        return pair(firstarg)
    

    car(cons(3, 4)) cons(3, 4)(firstarg) firstarg(3, 4)

        2
  •  0
  •   Negativ3    6 年前

    def someMethod(self, arg1, kwarg1=None):
        pass
    
    sig = signature(someMethod)
    

    str(sig)  # returns: '(self, arg1, kwarg1=None)'
    

    params = sig.parameters 
    print(params['kwarg1']) # prints: kwarg1=20
    

    print(len(params))  # 3
    

    kwarg1 = params['kwarg1']
    kwarg1.default # returns: None
    

        3
  •  -1
  •   Dinko Pehar    6 年前

    def foo(a=3, b=4):
        return 'test'
    
    if __name__ == '__main__':
        p = foo         # pointer to function
        print(type(p))  # function
        print(p.__defaults__)  # Returns (3, 4)
        # local_a = p.a       or p[0]
        # local_b = p.b       or p[1]