Как получить исходное имя позиционного параметра в Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как получить исходное имя позиционного параметра в Python?

Сообщение Anonymous »

Можно ли в Python автоматически получить исходные имена переменных, передаваемых текущей функции в качестве позиционных аргументов?

Это может быть удобно для целей отладки. Например, в функции «красивой печати» для префикса вывода каждого выгруженного значения его исходным именем вместо того, чтобы вызывающая сторона указывала его вручную.

Самый очевидный способ получить нечто подобное, вероятно, будет использование аргументов ключевых слов, например:

Код: Выделить всё

# 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"))
Функция pprint_func найдет исходное имя и распечатает его перед выгрузкой фактического значения:

Код: Выделить всё

a_var: 'Foo'
some_cat_func: 'Hello World'
Как я могу добиться этого в Python3.x?

Я предполагаю, что мы нужен доступ к исходному коду вызывающего контекста. Обратите внимание, что очень грязные варианты, такие как лексический анализ/анализ исходного кода Python вручную, определенно недопустимы.

Примечание: этот вопрос относится к предыдущий мой. Я создал новый вопрос, потому что тема развивалась.

Кроме того, этот ответ показался мне интересным, но он не работает, если переданный параметр является прямым результатом вызова ( то есть: pprint_func(result())), что приводит к неполному решению моей проблемы. А окончательное решение, предложенное исходным плакатом, настолько грязно, насколько это возможно.

Подробнее здесь: https://stackoverflow.com/questions/282 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»