1 回答

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