Python:赋值前引用的局部变量'string'

时间:2012-11-14 06:05:13

标签: python string function variables

我想知道为什么我从函数中为这个字符串添加一个字母会出现这个错误 local variable 'string' referenced before assignment

CODE

def update_string():
    string+='d'


string='s'

update_string()

2 个答案:

答案 0 :(得分:4)

您正在访问全局变量,需要声明它:

def update_string():
    global string # <<< declare `string` as global variable.
    string+='d'


string='s'

update_varibles()

答案 1 :(得分:1)

在函数的本地范围内,没有任何地方可以使用旧的'string',因此python假设您正在讨论外部范围中的那个。

此外,由于字符串是不可变的,通常的模式是创建一个新的并返回它,所以你可能更喜欢将你的函数接口更新为更像:

def update_string(str_in):
  return str_in + 'd'

然后你会用它代替:

my_string = update_string(my_string)