簡體   English   中英

Python 中的持久變量值

[英]Persisting variable value in Python

for i in range(0,3):
    j = 0
    print 'incrementing '
    j += 1
    print j

印刷

incrementing 
1
incrementing 
1
incrementing 
1

我怎樣才能堅持 'j' 的價值,以便它打印:

1
2
3

您不應該在循環中將j重置為零:

j = 0
for i in range(0,3):
    print 'incrementng '
    j += 1
    print j

如果你想把它放在 function 中,這是一個非常骯臟的 hack:默認 arguments,在 Python 中,如果默認參數是一個數組,它會變成不同的“靜態”,如:

def f(j = [0]):
    j[0] += 1
    print('incrementing', j[0])

f() # prints "incrementing 1"
f() # prints "incrementing 2"
f() # prints "incrementing 3"

玩得開心!

編輯:

驚人的,降級的,沒有任何解釋為什么這個黑客是壞的或離題的。 Python 中的默認 arguments 在解析時進行評估,我錯了嗎? 我不認為我是,我只是期望我的帖子上有聰明的答案而不是負面的觀點......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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