我在一个函数中设置一个字符串,然后尝试在另一个函数中打印它,以发现该字符串从未改变过。我做错了吗?
在我的脚本顶部定义变量
CHARNAME = "Unnamed"
设置变量的功能
def setName(name):
CHARNAME = name
print CHARNAME
使用功能
print CHARNAME
setName("1234")
print CHARNAME
输出
Unnamed
1234
Unnamed
答案 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