簡體   English   中英

字符串未從函數返回,但返回了列表

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM