2016-01-26 50 views
2

有沒有辦法爲**函數提供簽名引用(例如,用於IDE)?kwargs和函數簽名

例如:

def foo(**kwargs): 
    # call some third-party library with kwargs signature 

我想提供最新的IDE

所以自動完成,我怎麼形容在Python

+0

我不認爲除了明確簽名並避免使用'** kwargs'之外,還有其他方法可以做到這一點。它還取決於IDE如何獲取函數簽名 - 它解析AST還是實際導入模塊? – mgilson

+0

我想同樣的方式)但我想應該有一種方式來描述這一點。也許某種形式的評論 – kharandziuk

+0

如果你正在尋找神奇的評論,那完全取決於IDE。 python3.x增加了一些IDE可以反省的函數註釋,但是再次,這不會幫助你描述kwargs,而不僅僅是寫出它們。 – mgilson

回答

1

簽名這是不是你想要的東西相當,但它可能... help

from other_package import my_function 


def wrapped_help_text(wrapped_func): 
    """Decorator to pass through the documentation from a wrapped function. 
    """ 
    def decorator(wrapper_func): 
     """The decorator. 

     Parameters 
     ---------- 
     wrapped_func : callable 
      The wrapped function. 

     """ 
     wrapper_func.__doc__ = ('This method wraps the following method:\n\n' + 
           pydoc.text.document(wrapped_func)) 
     return wrapper_func 
    return decorator 


@wrapped_help_text(my_function) 
def wrapper(**kwargs): 
    """ 
    Parameters 
    ---------- 
    **kwargs 
     See other_package.my_function() 

    """ 
    my_function(**kwargs) 

有了這個,你現在可以調用內置help功能查看包裝的函數的文檔字符串。