2014-06-29 70 views
0

我想用Python编写一个脚本,使用BioPython读取一个FASTA文件并生成一个原始DNA序列列表作为条目。由于这段代码将被许多其他脚本使用,我将写这些代码,我希望为此目的的函数位于一个单独的Python文件中,我可以在我编写的每个其他脚本的开头导入该文件。包含我目前调用函数的脚本是这样:函数返回的列表/字典不返回

from Bio import SeqIO 
def read_fasta(dna): 
    genome = [] 
    for seq_record in SeqIO.parse(dna, "fasta"): 
     genome.append(str(seq_record.seq)) 
    return genome 

当我从CMD调用这个函数在Python中,函数工作并读取文件生成列表如我所愿。但是,如果我尝试再次访问列表genome,则会出现Traceback | NameError: name 'genome' not defined错误。

有人可以解释为什么发生这种情况,甚至认为我已经把return genome陈述?我能做些什么来解决这个问题?

+0

你能显示堆栈跟踪吗? – karthikr

+0

您可以在堆栈跟踪中使用此函数显示脚本吗? – vaidik

+1

你在哪里打电话?当你调用它时,它返回*值*,它不会创建一个名为'基因组'的变量。你必须对返回的值做些什么。 从Bio_FASTA进口* read_fasta(“pcr_template.fasta”) 我应该如何分配一个变量,基因组/用它做什么: – BrenBarn

回答

3

genome位于函数的局部范围内,因此它从“外部”不可见。您应该将read_fasta函数的结果赋值给某个变量以访问该函数的返回结果。例如:

new_variable = read_fasta("pcr_template.fasta")

而且它读取 - 让new_variable被分配给功能read_fasta"pcr_template.fasta"作为参数的结果。

现在通过访问new_variable访问genome(或您的函数已返回的任何内容)。