[英]string not returned from function, but list is returned
我使用一个函数来聚合字符串;
此函数通过两种不同的方法执行此串联:
1)通过字符串连接:CUM_STR = CUM_STR + str(IDX)
2)通过列表追加:CUM_LST.append(IDX)
从此函数返回时,
方法1始终为CUM1_TXT提供空字符串
方法2正确聚合CUM_LST列表中的字符串
这是此情况的示例:
CUM1_TXT = ''
CUM1_LIST = []
def modif(IDX,CUM_STR,CUM_LST):
CUM_STR = CUM_STR + str(IDX)
CUM_LST.append(IDX)
print CUM_STR
print CUM_LST
return CUM_STR,CUM_LST
for INDEX in range(10):
modif(INDEX,CUM1_TXT,CUM1_LIST)
print CUM1_TXT,CUM1_LIST
顺便说一句,在return语句上编写CUM_STR和CUM_LST的事实不会改变结果
任何帮助表示赞赏
让我们采用您的方法:
def modif(IDX,CUM_STR,CUM_LST):
CUM_STR = CUM_STR + str(IDX)
CUM_LST.append(IDX)
print CUM_STR
print CUM_LST
return CUM_STR,CUM_LST
CUM_STR
是一个str
对象。 它是不可变的 ,因此modif
不能更改调用者的值。
CUM_LST
是一个list
对象。 这是可变的 。 在方法中附加会影响调用方的值(虽然修改参数不是很好,但调用方可能不会期望它)
最重要的是,您正在返回值,但没有在调用方中分配它们:函数返回时,返回值会丢失。 执行参数return
不会更改参数。
如果允许的话,我会这样重写:
def modif(IDX,CUM_STR,CUM_LST):
return CUM_STR + str(IDX),CUM_LST+[IDX]
而且您必须这样称呼它:
CUM1_TXT,CUM1_LIST = modif(INDEX,CUM1_TXT,CUM1_LIST)
您将舍弃modif函数的返回值,用以下行替换对modif的调用:
CUM1_TXT,_ = modif(INDEX,CUM1_TXT,CUM1_LIST)
请注意,“ _”是Python常用的调用变量的惯用方法
C
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.