Как проверить, присвоено ли возвращаемое значение функции чему-либо в Python
У меня есть функция с возвращаемым значением. Я бы хотел, чтобы функция вела себя по-другому, когда возвращаемое значение функции чему-то присваивается.
Так что примерно так:
def func():
if return_value_assigned():
print("yes")
else:
print("no")
return 0
# this should print "no"
func()
# this should print "yes"
a = func()
Я пробовал использовать этот метод:
frame_stack = inspect.getouterframes(inspect.currentframe())
code_context = frame_stack[2].code_context[0]
is_return_value_assigned = re.match(r"[\w+ ,]*=", code_context) is not None
Однако, видимо, code_context хранит только последнюю строку вызова функции. Так, например, это не сработает:
a = func(*args,
**kwargs)
Есть ли лучший способ сделать это? Можно ли получить контекст кода всего вызова функции, а не только последней строки?
1 ответ
Единственный вариант, который имеет хоть какой-то смысл в отношении всех стандартов программирования в отношении обязанностей вызывающего и вызываемого, которые я когда-либо видел, это что-то вроде этого:
def foo(return_value=True):
if return_value:
print("yes")
else:
print("no")
return 0
В противном случае вы просите вызываемую функцию получить информацию от вызывающего, что по многим причинам кажется очень плохой идеей.