Python получает переменное имя аргумента в функции
Я хочу сделать что-то вроде этого:
fib = 1
foo = (arg):
print arg, argName # the name of the variable that was put in for arg
foo(fib)
И вернуть это:
1, fib
Ответ 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
Ответ 2
Невозможно выполнить. Python не различает имена на этом уровне.
Ответ 3
def print_args(**kwargs):
for name,value in kwargs.iteritems():
print name, value