下面代码会存在什么问题,如何改进?
def strappend(num):
str='first'
for i in range(num):
str+=str(i)
return str
答:
首先不应该使用 Python 的内置类似 str 作为变量名这里我把它改为了 s,
另外在Python,str 是个不可变对象,每次迭代都会生成新的存储空间,num 越大,创建的 str 对象就会越多,内存消耗越大。使用 yield 改成生成器即可,还有一点就是命名规范的位置,函数名改为_分割比较好,完整的代码如下:
def str_append(num):
s = 'first'
for i in range(num):
s += str(i)
yield s
if __name__ == '__main__':
for i in str_append(3):
print(i)