函数范围内的Python exec无法设置值

时间:2018-01-24 08:40:42

标签: python python-3.x exec

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

0 个答案:

没有答案