以下是我希望能够做的事情x = 1f(x+3) # returns 'x+3' (a string)这可能吗?(Lisp 和 C 可以做到这一点,但必须是一个宏)f
2 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
这是可能的,尽管其他人已经说过。我能想到的唯一方法是检查源代码。我不能建议在现实中这样做。不过,这是一个有趣的小玩具。
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)
打印 ,这正是传递给 f() 的内容。x + 3
慕码人8056858
TA贡献1803条经验 获得超6个赞
如果要添加的值(3) 是一个常量,
`def f(x):
return f"{x}+3"
f(x)
如果不是,则可以传递两个参数,
def f(x, y):
return f"{x} + {y}"
f(x, y)
添加回答
举报
0/150
提交
取消