我在function1
中创建了一个列表。我希望能够在function2
中访问和修改它。如果没有全局变量,我怎么做?
这两个函数都不嵌套在另一个函数中,我需要能够在多个函数中为多个列表推广这一点。
我希望能够在其他函数中访问word_list
和sentence_starter
。
def Markov_begin(text):
print create_word_lists(text)
print pick_starting_point(word_list)
return starting_list
def create_word_lists(filename):
prefix_dict = {}
word_list = []
sub_list = []
word = ''
fin = open(filename)
for line in fin:
the_line = line.strip()
for i in line:
if i not in punctuation:
word+=(i)
if i in punctuation:
sub_list.append(word)
word_list.append(sub_list)
sub_list = []
word = ''
sub_list.append(word)
word_list.append(sub_list)
print 1
return word_list
def pick_starting_point(word_list):
sentence_starter = ['.','!','?']
starting_list = []
n = 0
for n in range(len(word_list)-1):
for i in word_list[n]:
for a in i:
if a in sentence_starter:
starting_list += word_list[n+1]
print 2
return starting_list
def create_prefix_dict(word_list,prefix_length):
while prefix > 0:
n = 0
while n < (len(word_list)-prefix):
key = str(''.join(word_list[n]))
if key in prefix_dict:
prefix_dict[key] += word_list[n+prefix]
else:
prefix_dict[key] = word_list[n+prefix]
n+=1
key = ''
prefix -=1
print Markov_begin('Reacher.txt')
您只需使用第一个函数创建的列表作为第二个函数的参数:
但是,如果需要在多个地方使用列表(由多个函数处理),那么将其存储为变量并不是一件坏事——更糟的是,如果列表生成函数进行了一些计算以生成列表,那么只需计算一次就可以节省CPU。
您应该将其重构为类:
用法
如果您不想a)使用全局或b)返回列表并将其四处传递,则必须使用一个类并将列表保存在其中。
上课路线最好
相关问题 更多 >
编程相关推荐