Вот что я хотел бы сделать
x = 1 f(x+3) # returns 'x+3' (a string)
Возможно ли это?
(Lisp и C могут это сделать, но f может быть макросом)
f
Это возможно, несмотря на то, что говорили другие. Единственный способ сделать это - проверить исходный код. Я не могу рекомендовать делать это в реальности. Это забавная маленькая игрушка.
from inspect import currentframe import linecache import re def f(x): cf = currentframe() calling_line_number = cf.f_back.f_lineno calling_line = linecache.getline(__file__, calling_line_number) m = re.search(r"^.*?f\((?P<arg>.*?)\).*$", calling_line) if m: print (m.group("arg")) x = 1 f(x + 3)
Prints x + 3, что и было передано функции f ().
x + 3
Если значение, которое вы хотите добавить (3), является константой,
`def f(x): return f"{x}+3" f(x)
Если это не так, вы можете передать два параметра,
def f(x, y): return f"{x} + {y}" f(x, y)