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

2024-05-17 07:00:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道为什么从函数向字符串添加字母时会出现此错误。
local variable 'string' referenced before assignment

代码

def update_string():
    string+='d'


string='s'

update_string()

Tags: 函数字符串代码stringlocaldef错误字母
2条回答

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

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


string='s'

update_varibles()

旧的“字符串”在函数的本地作用域中没有任何来源,因此python假设您正在讨论来自外部作用域的字符串。

此外,由于字符串是不可变的,通常的模式是创建一个新的字符串并返回它,因此您可能更愿意将函数接口更新为类似于:

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

然后你可以用它来代替:

my_string = update_string(my_string)

相关问题 更多 >