Это может быть удобно для целей отладки. Например, в функции «красивой печати» для префикса вывода каждого выгруженного значения его исходным именем вместо того, чтобы вызывающая сторона указывала его вручную.
Самый очевидный способ получить нечто подобное, вероятно, будет использование аргументов ключевых слов, например:
Код: Выделить всё
# caution: Python3 code
def pprint_func(**kwargs):
for n, v in kwargs.items():
print("{}: {}".format(n, str(v)))
pprint_func(the_name="a value")
# this will output: "the_name: a value"

Я бы предпочел использовать немного магии, например:
Код: Выделить всё
a_var = "Foo"
pprint_func(a_var, some_cat_func("Hello", "World"))
Код: Выделить всё
a_var: 'Foo'
some_cat_func: 'Hello World'
Я предполагаю, что мы нужен доступ к исходному коду вызывающего контекста. Обратите внимание, что очень грязные варианты, такие как лексический анализ/анализ исходного кода Python вручную, определенно недопустимы.
Примечание: этот вопрос относится к предыдущий мой. Я создал новый вопрос, потому что тема развивалась.
Кроме того, этот ответ показался мне интересным, но он не работает, если переданный параметр является прямым результатом вызова ( то есть: pprint_func(result())), что приводит к неполному решению моей проблемы. А окончательное решение, предложенное исходным плакатом, настолько грязно, насколько это возможно.
Подробнее здесь: https://stackoverflow.com/questions/282 ... -in-python