如何使用全局变量以及如何正确定义它们



我被困在这个包含全局变量的问题上,我知道,我如何将它们装箱的方式,它只是不起作用。让我向您展示我的代码:

suffix_map = {}
prefix = ()
def markov_body(file, order, header_text, header = True):
    start = open(file)
    if header:
        for line in start:
            if line.startswith(header_text):
                break
    for line in start:      
        for word in line.rstrip().split():
            global prefix
            if len(prefix) < order:
                prefix += (word,)
                return
            try:
                suffix_map[prefix].append(word)
            except KeyError:
                suffix_map[prefix] = [word]
            prefix = shifted(prefix, word)
def shifted(t, word):
    return t[1:] + (word,)
def markov_text(n):
    begin = random.choice(list(suffix_map.keys()))
    for i in range(n):
        suff = suffix_map.get(begin)
        if suff == None:
            return markov_text(n-i)
        word = random.choice(suff)
        print(word, end = "")
        begin = shifted(begin, word)
print(markov_text(100))

global变量是 prefixsuffix_map 。第一个问题是,如果它是全局的并且在方法之外定义,为什么我必须再次将其定义为 for 循环中的global?第二个问题是:为什么根本不向prefixsuffix_map添加任何东西?感谢您的帮助!

你将不得不使用 global suffix_mapglobal prefix .

相关内容

  • 没有找到相关文章

最新更新