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

时间:2017-02-02 21:40:53

标签: python for-loop global-variables return-value

我坚持这个包含全局变量的那个,我知道,我如何创建它们的方式,它只是不起作用。让我告诉你我的代码:

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添加任何内容?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

您必须使用global suffix_mapglobal prefix