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()
Expect result:
Hello「World」
World
Hello「World」
World
Actual result:
Hello「World」
World
Hello「World」
Hello「World」
I am running in Python 3.6.2. My question is why cannot exec set the value when it is inside the function?
However, it can set on a new variable.
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()
Result:
Hello「World」
World
Hello「World」
World
How can I make test()
change value2
inside exec
?