python中是否需要字符串初始化?

时间:2014-01-23 04:53:24

标签: python string

鉴于此代码:

  def double_char(str):
  result = ""
  for i in range(len(str)):
    result += str[i] + str[i]
  return result

result = ""是字符串的初始化吗?如果是这样,有必要在第一时间做吗?

2 个答案:

答案 0 :(得分:7)

当你这样做时

result += ...

它基本上意味着

result = result + ...

此时Python不会知道值result。所以,它会抛出这个错误

UnboundLocalError: local variable 'result' referenced before assignment

无论如何,初始化变量总是更好。

<强>建议

  1. 不要将str用作变量名称,它会隐藏内置str函数。

  2. 您要做的事情可以在一行中完成,例如

    return "".join(i*2 for i in input_string)
    

  3. def double_char(input_string):
      return "".join(i*2 for i in input_string)
    
    print double_char("thefourtheye")           # tthheeffoouurrtthheeyyee
    

答案 1 :(得分:0)

虽然Python在使用变量之前不要求您说明变量的类型(例如int a = 10而不仅仅是a = 10),但变量result必须存在在+=之前可以使用它。否则,当您使用result += ...时,Python将尝试result = result + ...

作为另一个建议,请避免命名变量str,因为它会覆盖Python中的内置str函数/类型。