Python变量“重置”

时间:2013-11-09 23:15:42

标签: python python-2.7

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

在我的脚本顶部定义变量

CHARNAME = "Unnamed"

设置变量的功能

def setName(name):
        CHARNAME = name
        print CHARNAME

使用功能

print CHARNAME
setName("1234")
print CHARNAME

输出

Unnamed
1234
Unnamed

2 个答案:

答案 0 :(得分:13)

当您在CHARNAME = name函数中执行setName时,您只为该范围定义 。即,它不能在功能之外访问。因此, global vriable CHARNAME(值为"Unnamed"的那个)是不受影响的,并且在调用函数后继续打印其内容

您实际上并没有覆盖全局变量CHARNAME。如果您愿意,您必须在定义CHARNAME之前将setName置于函数global CHARNAME中,以全局化变量def setName(name): global CHARNAME CHARNAME = name print CHARNAME

return

或者,您可以 CHARNAME 从函数中def setName(name): return name CHARNAME = setName('1234') 的值:

CHARNAME = '1234'

当然这是无用的,你也可以做{{1}}

答案 1 :(得分:3)

你需要

def setName(name):
    global CHARNAME
    CHARNAME = name
    print CHARNAME

http://effbot.org/pyfaq/how-do-you-set-a-global-variable-in-a-function.htm