【发布时间】:2019-09-22 16:43:42
【问题描述】:
我已经声明了一个全局字典和一个变量。现在,当在一个类中访问两者时,我可以访问字典,但要访问另一个变量,我得到UnboundLocalError。为了解决这个问题,我使用了这行代码:global curr_length,然后访问它并运行。但我想知道为什么普通整数变量需要这行额外的代码,而字典不需要?
代码是:
memoized = {}
curr_length = 0
curr_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"))
【问题讨论】:
-
当您从方法中删除
global curr_length时会发生什么?