Ответ 1
Вы не можете так поступать (как уже ответил Игнасио Васкес-Абрамс), но вы можете сделать это аналогичным образом:
>>> def foo(**kwargs):
for arg_name in kwargs:
return kwargs[arg_name], arg_name
>>> foo(fib=1)
(1, 'fib')
Единственное различие заключается в том, что вы должны использовать аргументы ключевого слова, иначе это не сработает.
Альтернативным решением также является доступ к атрибуту __name__
переданной переменной, который приведет к получению имени функции, класса или имени (или чего-то еще, что будет определять это имя). Единственное, о чем вы должны знать, это то, что по умолчанию это не имя переменной, а исходное имя функции/класса/модуля (тот, который был назначен, когда он был определен). См. Пример здесь: http://ideone.com/MzHNND