import re
value = eval("'Hello「World」'")
c = [
"g = re.search('.*「(.*)」', value, re.IGNORECASE)",
"print(value)",
"value = g.group(1)",
"print(value)"
]
if c is not None:
for d in c:
exec(d)
def test():
value2 = eval("'Hello「World」'")
c2 = [
"g2 = re.search('.*「(.*)」', value2, re.IGNORECASE)",
"print(value2)",
"value2 = g2.group(1)",
"print(value2)"
]
if c2 is not None:
for d2 in c2:
exec(d2)
test()
期待结果:
Hello「World」
World
Hello「World」
World
实际结果:
Hello「World」
World
Hello「World」
Hello「World」
我在Python 3.6.2中运行。我的问题是为什么exec在函数内部时不能设置值?
但是,它可以设置一个新变量。
def test2():
value2 = eval("'Hello「World」'")
c2 = [
"g2 = re.search('.*「(.*)」', value2, re.IGNORECASE)",
"print(value2)",
"value3 = g2.group(1)",
"print(value3)"
]
if c2 is not None:
for d2 in c2:
exec(d2)
test2()
结果:
Hello「World」
World
Hello「World」
World
如何在test()
内value2
更改exec
?