如何在编译代码对象中传递参数?
How to pass parameters in compiled code object?
我想在 python 代码对象中传递几个参数。我已经尝试了下面的代码,它 运行 很好,但我想知道如何在外部传递 a
& b
的值并将 return 变量分配给另一个变量c
.
codeInString = 'a = 5\nb=6\nsum=a+b\nprint("sum =",sum)\v return sum'
codeObject = compile(codeInString, 'sumstring', 'exec')
exec(codeObject)
像这样:
codeInString = 'sum=a+b\nprint("sum =",sum) return sum'
codeObject = compile(codeInString, 'sumstring', 'exec')
c = exec(codeObject(a,b))
请注意:我是运行分布式环境下的这段代码。
您似乎认为自己在 codeInString
中定义函数,但实际上不是。通过删除 return
语句修复该问题,以下工作:
from textwrap import dedent
codeInString = dedent("""\
sum = a + b
print("sum =", sum)
""")
codeObject = compile(codeInString, 'sumstring', 'exec')
exec(codeObject, dict(a=5, b=6)) # -> sum = 11
另请注意 exec()
的 return 值为 None
。
我想在 python 代码对象中传递几个参数。我已经尝试了下面的代码,它 运行 很好,但我想知道如何在外部传递 a
& b
的值并将 return 变量分配给另一个变量c
.
codeInString = 'a = 5\nb=6\nsum=a+b\nprint("sum =",sum)\v return sum'
codeObject = compile(codeInString, 'sumstring', 'exec')
exec(codeObject)
像这样:
codeInString = 'sum=a+b\nprint("sum =",sum) return sum'
codeObject = compile(codeInString, 'sumstring', 'exec')
c = exec(codeObject(a,b))
请注意:我是运行分布式环境下的这段代码。
您似乎认为自己在 codeInString
中定义函数,但实际上不是。通过删除 return
语句修复该问题,以下工作:
from textwrap import dedent
codeInString = dedent("""\
sum = a + b
print("sum =", sum)
""")
codeObject = compile(codeInString, 'sumstring', 'exec')
exec(codeObject, dict(a=5, b=6)) # -> sum = 11
另请注意 exec()
的 return 值为 None
。