我尝试使用BioPython在Python中编写脚本,该脚本读取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 :(得分:3)
genome
位于函数的本地范围内,因此从"外部"中看不到它。您应该将read_fasta
函数的结果分配给某个变量,以便访问函数的返回结果。例如:
new_variable = read_fasta("pcr_template.fasta")
并且已阅读 - 让new_variable
以[{1}}作为参数分配给函数read_fasta
的结果。
现在只需访问"pcr_template.fasta"
即可访问genome
(或您的函数返回的任何内容)。