Код: Выделить всё
def function1(param1, param2):
#...
return 0
В следующем примере function1.__code__.co_varnames получает исходные имена параметров функции:
Код: Выделить всё
"param1, param2"Код: Выделить всё
"var1, var2"Код: Выделить всё
def function1(param1, param2):
print(function1.__code__.co_varnames)
'''
...
if param2_name == X:
do something.
elif param2_name == Y:
do something else.
'''
return 0
var1 = 1
var2 = 2
var3 = function1(var1, var2)
Кстати, да, это можно было бы сделать «просто» добавив дополнительный параметр, но причина всего этого именно в том, чтобы избежать добавления дополнительного параметра в функцию. В связи с требованиями, в этом случае дополнительный параметр не является решением.
Спасибо
ОБНОВЛЕНИЕ 1:
Здесь мы пытаемся просто сохранить существующий синтаксис вызова функции, но в то же время дать функции возможность обнаруживать своего рода контекст, для обнаружения которого не был предназначен ее предыдущий код. Это основная причина, поскольку добавление дополнительного параметра для этой цели не будет решением, поскольку потребуется изменить текущий синтаксис вызова.
ОБНОВЛЕНИЕ 2: >
Я создал новую тему с более подробной информацией о других возможных решениях основной ситуации, когда функция может идентифицировать рабочий контекст без необходимости указывать этот контекст с помощью нового параметра:Как функция может идентифицировать тип рабочего контекста, не указывая его с помощью нового параметр, сохраняющий существующий синтаксис вызова функции
Подробнее здесь: https://stackoverflow.com/questions/793 ... tion-using
Мобильная версия