10

我正在将一个字符串设置为函数中的某个内容,然后尝试在另一个函数中打印它以发现该字符串从未更改过。难道我做错了什么?

在我的脚本顶部定义变量

CHARNAME = "Unnamed"

设置变量的函数

def setName(name):
        CHARNAME = name
        print CHARNAME

函数的使用

print CHARNAME
setName("1234")
print CHARNAME

输出

Unnamed
1234
Unnamed
4

2 回答 2

13

当您CHARNAME = name在函数中执行此操作时,您只是为该范围setName定义它。即,它不能在函数之外访问。因此,全局变量(具有 value 的变量)保持不变,您在调用函数后继续打印其内容CHARNAME"Unnamed"

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

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

或者,您可以从函数return中获取值CHARNAME

def setName(name):
    return name

CHARNAME = setName('1234')

当然这是相当没用的,你不妨这样做CHARNAME = '1234'

于 2013-11-09T23:17:11.093 回答
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

于 2013-11-09T23:18:52.133 回答