Python变量"重置"

Zoo*_*oty 10 python python-2.7

我在一个函数中设置一个字符串,然后尝试在另一个函数中打印它,以发现该字符串从未改变过.难道我做错了什么?

在我的脚本顶部定义变量

CHARNAME = "Unnamed"
Run Code Online (Sandbox Code Playgroud)

功能设置变量

def setName(name):
        CHARNAME = name
        print CHARNAME
Run Code Online (Sandbox Code Playgroud)

使用功能

print CHARNAME
setName("1234")
print CHARNAME
Run Code Online (Sandbox Code Playgroud)

产量

Unnamed
1234
Unnamed
Run Code Online (Sandbox Code Playgroud)

Ter*_*ryA 13

当你CHARNAME = namesetName功能,你定义它只能用于该范围.即,它不能在功能之外访问.因此,全局变量CHARNAME(具有值的变量"Unnamed")不受影响,并且在调用函数后继续打印其内容

您实际上并没有覆盖全局变量CHARNAME.如果您愿意,您必须在定义之前通过放置来全局化CHARNAME函数中的变量:setNameglobal CHARNAME

def setName(name):
    global CHARNAME
    CHARNAME = name
    print CHARNAME
Run Code Online (Sandbox Code Playgroud)

或者,你可以从函数return的值CHARNAME:

def setName(name):
    return name

CHARNAME = setName('1234')
Run Code Online (Sandbox Code Playgroud)

当然这很无用,你也可以这样做 CHARNAME = '1234'