第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么全局字典可以在類內(nèi)部訪問,而全局整數(shù)變量不能?

為什么全局字典可以在類內(nèi)部訪問,而全局整數(shù)變量不能?

侃侃無極 2022-06-02 10:33:17
我已經(jīng)聲明了一個(gè)全局字典和一個(gè)變量?,F(xiàn)在,當(dāng)在一個(gè)類中訪問兩者時(shí),我可以訪問字典,但要訪問另一個(gè)變量,我會(huì)得到UnboundLocalError. 為了解決這個(gè)問題,我使用了代碼行:global curr_length然后訪問它并運(yùn)行它。但我想知道為什么普通整數(shù)變量需要這行額外的代碼,而字典不需要?代碼是:memoized = {}curr_length = 0curr_pal = ""class Solution:    def check_palindrome(self, str_):        if len(str_) <= 1:            return False        global curr_length        if len(str_) <= curr_length:            return False        if memoized.get(str_, None):            return memoized[str_]        if str_ == str_[::-1]:            memoized[str_] = True            curr_length = len(str_)            return True        memoized[str_] = False        return False    def longest_palindrome(self, str_, starting_index):        if len(str_) <= 1:            return None        n = len(str_)        if self.check_palindrome(str_[starting_index:n]):            return str_        n -= 1        self.longest_palindrome(str_[starting_index:n], starting_index)    def longestPalindrome(self, s: str) -> str:        for starting_index in range(len(s)):            pal = self.longest_palindrome(s, starting_index)            if pal:                return pal        return ""solution = Solution()print(solution.longestPalindrome("babad"))
查看完整描述

1 回答

?
Cats萌萌

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)鍵字


查看完整回答
反對(duì) 回復(fù) 2022-06-02
  • 1 回答
  • 0 關(guān)注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)