1 回答

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
短的:
您正在嘗試在查找局部變量但找不到它的函數(shù)內(nèi)更改curr_lengthwith的值。它需要該行知道它是一個(gè)變量。curr_length = len(str_)curr_lengthglobal curr_lengthglobal
至于為什么您想知道為什么dict對(duì)象不需要global memoized行,您應(yīng)該閱讀以下答案: 全局字典不需要關(guān)鍵字 global 來修改它們?或者為什么在這種情況下不需要全局關(guān)鍵字?
解釋:
在 Python 中,在函數(shù)之外或在全局范圍內(nèi)聲明的變量稱為全局變量。這意味著,可以在函數(shù)內(nèi)部或外部訪問全局變量。
讓我們看一個(gè)關(guān)于如何在 Python 中創(chuàng)建全局變量的示例。
x = "global"
def foo():
print("x inside :", x)
foo()
print("x outside:", x)
當(dāng)我們運(yùn)行代碼時(shí),將輸出:
x inside : global
x outside: global
在上面的代碼中,我們創(chuàng)建了一個(gè)全局變量 x 并定義了一個(gè) foo() 來打印全局變量 x。最后,我們調(diào)用 foo() 來打印 x 的值。
如果你想在函數(shù)中改變 x 的值怎么辦?
def foo():
x = x * 2
print(x)
foo()
當(dāng)我們運(yùn)行代碼時(shí),將輸出:
UnboundLocalError: local variable 'x' referenced before assignment
輸出顯示錯(cuò)誤,因?yàn)?Python 將 x 視為局部變量,并且 x 也未在 foo() 中定義。
為了完成這項(xiàng)工作,我們使用global關(guān)鍵字
添加回答
舉報(bào)