鑑於這種代碼:在python中需要字符串初始化嗎?
def double_char(str):
result = ""
for i in range(len(str)):
result += str[i] + str[i]
return result
是result = ""
字符串初始化?如果是這樣,是否有必要首先做?
鑑於這種代碼:在python中需要字符串初始化嗎?
def double_char(str):
result = ""
for i in range(len(str)):
result += str[i] + str[i]
return result
是result = ""
字符串初始化?如果是這樣,是否有必要首先做?
當你
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
而Python不要求你陳述的類型一個變量在使用之前(例如int a = 10
而不是隻有a = 10
),變量result
必須在+=
之前可以使用。否則,當你使用result += ...
時,Python會嘗試result = result + ...
。
作爲另一個建議,避免命名變量str
,因爲它會覆蓋Python中內置的str
函數/類型。
請注意,這整個事情是相當低效的;因爲使用不可變的字符串,這意味着每次迭代都會創建一個新的字符串對象,所以最好加入一個列表,而不是一次構建一個字符。 – geoffspear