我有一組模塊X中的功能,都共享一組輸入。因此,我想使用字符串格式來用長字符串替換標識符。對於這一點,我使用的是裝飾,比如,從裝飾者,乾淨地訪問目標功能模塊命名空間
inputs = """Some long string"""
@expanddoc
def spam(...):
"""This is a silly function.
{inputs}
:returns: Something useless
"""
@expanddoc
def eggs(...):
"""This is an even sillier function.
{inputs}
:returns: Something pointless
"""
在那裏我有功能expanddoc
,在模塊Y規定,如,
def expanddoc(func):
func.__doc__ = func.__doc__.format(**globals()
return func
但**globals()
指Y
名字空間,而不是到X
的命名空間。我如何幹淨地訪問從裝飾器expanddoc
中定義的任何模塊func
的命名空間?
但是'func'可以從任何模塊來了,它'不一定是'X' - 我不能在'expanddoc'中硬編碼,因爲我還不知道。 – gerrit
@gerrit你是對的。 – Robert