【问题标题】:Python: local variable 'string' referenced before assignmentPython:分配前引用的局部变量“字符串”
【发布时间】:2012-11-14 06:05:12
【问题描述】:

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

代码

def update_string():
    string+='d'


string='s'

update_string()

【问题讨论】:

  • update_variables 未在任何地方定义。 update_string 可能应该采用输入变量或使用 global(坏主意)
  • 抱歉,我正在编辑要发布在此处的代码

标签: python string function variables


【解决方案1】:

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

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


string='s'

update_varibles()

【讨论】:

  • 最好使用update_string 的输入参数来完成。 global 通常不是最佳选择
【解决方案2】:

旧的“字符串”在函数的本地范围内无处可出,因此 python 假设您正在谈论的是来自外部范围的字符串。

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

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

然后你会像这样使用它:

my_string = update_string(my_string)

【讨论】:

    猜你喜欢
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多