[英]recursively concatenate string in python
我有一個遞歸函數,它連接一個字符串(並執行一些邏輯),邏輯完成后,它完成函數並將結果返回到變量中。
(我的功能很大,因此我簡化了它。
import random
def test(str):
l = len(str)
if l >= 10:
return 0
str += random.choice('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
test(str)
str = ''
test(str)
print str
當我在函數中“打印str”時,它會起作用:
r
rV
rVG
rVGF
rVGFK
rVGFKa
rVGFKat
rVGFKatY
rVGFKatYN
rVGFKatYNY
但是當我打印str(代碼的最后一行)時,我得到一個空字符串
字符串在Python中不可更改,例如,如果希望函數實際修改其輸入,請使用return語句或字符數組。
這行:
str += random.choice('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
將初始化一個新的對象str
並為其分配str + random.(...)
。 因此,傳遞給該函數的實際對象基本上已被放棄,后來又收集了垃圾。
盡管這不是最理想的實現,但這正是您要尋找的東西:
import random
def test(input_string):
l = len(input_string)
if l >= 10:
return input_string
input_string += random.choice('abcdefghijklmnopqrstuvwxyz'
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
return test(input_string)
input_string = ''
input_string = test(input_string)
print(input_string)
全局變量還是局部變量? 嘗試全局變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.