[英]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.