鉴于此代码:
def double_char(str):
result = ""
for i in range(len(str)):
result += str[i] + str[i]
return result
result = ""
是字符串的初始化吗?如果是这样,有必要在第一时间做吗?
答案 0 :(得分:7)
当你这样做时
result += ...
它基本上意味着
result = result + ...
此时Python不会知道值result
。所以,它会抛出这个错误
UnboundLocalError: local variable 'result' referenced before assignment
无论如何,初始化变量总是更好。
<强>建议强>
不要将str
用作变量名称,它会隐藏内置str
函数。
您要做的事情可以在一行中完成,例如
return "".join(i*2 for i in input_string)
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
函数/类型。