Python 未返回函数中的列表/字典
我试图用Python编写一个脚本,使用BioPython读取一个FASTA文件并生成一个原始DNA序列列表作为条目 由于我将要编写的许多其他脚本都将使用此代码,因此我希望用于此目的的函数位于一个单独的Python文件中,我可以在我编写的每个其他脚本开始时导入该文件。包含我当前调用的函数的脚本如下所示:Python 未返回函数中的列表/字典,python,bioinformatics,biopython,Python,Bioinformatics,Biopython,我试图用Python编写一个脚本,使用BioPython读取一个FASTA文件并生成一个原始DNA序列列表作为条目 由于我将要编写的许多其他脚本都将使用此代码,因此我希望用于此目的的函数位于一个单独的Python文件中,我可以在我编写的每个其他脚本开始时导入该文件。包含我当前调用的函数的脚本如下所示: from Bio import SeqIO def read_fasta(dna): genome = [] for seq_record in SeqIO.parse(dna,
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
当我在Python中从cmd调用此函数时,该函数会按照我的意愿工作并读取生成列表的文件。但是,如果我再次尝试访问列表基因组
,我会得到一个回溯| NameError:name'genome'未定义
错误
有人能解释为什么会发生这种情况吗,即使我已经把
returngenome
语句放在这里了?我能做些什么来解决这个问题呢?基因组
在函数的局部范围内,因此从“外部”看不到它。您应该将read_fasta
函数的结果分配给某个变量,以便访问函数的返回结果。例如:
new\u variable=read\u fasta(“pcr\u template.fasta”)
并且它是读取的-让新变量
被分配给函数读取fasta
的结果,并使用“pcr\u template.fasta”
作为参数
现在,只需通过访问
新变量基因组
就可以访问基因组(或函数返回的任何内容),因为它位于函数的局部范围内,因此从“外部”看不到它。您应该将read_fasta
函数的结果分配给某个变量,以便访问函数的返回结果。例如:
new\u variable=read\u fasta(“pcr\u template.fasta”)
并且它是读取的-让新变量
被分配给函数读取fasta
的结果,并使用“pcr\u template.fasta”
作为参数
现在,只需通过访问新变量基因组
就可以访问基因组(或函数返回的任何内容),因为它位于函数的局部范围内,因此从“外部”看不到它。您应该将read_fasta
函数的结果分配给某个变量,以便访问函数的返回结果。例如:
new\u variable=read\u fasta(“pcr\u template.fasta”)
并且它是读取的-让新变量
被分配给函数读取fasta
的结果,并使用“pcr\u template.fasta”
作为参数
现在,只需通过访问新变量基因组
就可以访问基因组(或函数返回的任何内容),因为它位于函数的局部范围内,因此从“外部”看不到它。您应该将read_fasta
函数的结果分配给某个变量,以便访问函数的返回结果。例如:
new\u variable=read\u fasta(“pcr\u template.fasta”)
并且它是读取的-让新变量
被分配给函数读取fasta
的结果,并使用“pcr\u template.fasta”
作为参数
现在,只需访问new_variable
即可访问genome
(或您的函数返回的任何内容),您可以显示堆栈跟踪吗?您可以显示脚本在哪里使用此函数和堆栈跟踪吗?您在哪里调用它?当您调用它时,它返回值,它不会创建名为genome
的变量。您必须对返回的值进行处理。在cmd中,我这样称呼它:from Bio_FASTA import*read_FASTA(“pcr_template.FASTA”),我应该如何为基因组分配变量/对其进行处理?谢谢genome=read\u fasta(“pcr\u template.fasta”)
。尽管您正在创建的这个“全局”基因组
变量与“局部”基因组
变量除了名称之外没有任何共同之处(“局部”基因组
只有在函数未完成时才存在,read\u fasta
函数才存在),但最好将其命名为其他名称,例如result=read\u fasta(“pcr_template.fasta”)
。现在,当您尝试访问结果
变量时,您将有基因组
列表。您可以显示堆栈跟踪吗?您可以显示脚本在哪里使用此函数和堆栈跟踪吗?您在哪里调用它?当您调用它时,它返回值,它不会创建名为基因组
的变量。您必须o返回值的东西。在cmd中,我这样称呼它:从Bio_FASTA import*read_FASTA(“pcr_template.FASTA”)我应该如何为基因组分配变量/使用它做些什么?谢谢!genome=read_FASTA(“pcr_template.FASTA”)
。尽管您正在创建的这个“全局”基因组
变量与“局部”基因组
变量没有任何共同之处,但名称除外(“局部”基因组
仅在read\u fasta
函数未完成时才存在),最好将其命名为其他名称,例如result=read\u fasta(“pcr\u template.fasta”)
。现在,当您尝试访问结果
变量时,您将有基因组
列表。您可以显示堆栈跟踪吗?您可以显示脚本在哪里使用此函数和堆栈跟踪吗?您在哪里调用它?当您调用它时,它返回值,它不会创建名为基因组
的变量。您必须o返回值的东西。在cmd中,我这样称呼它:从Bio_FASTA import*read_FASTA(“pcr_template.FASTA”)我应该如何为基因组分配变量/使用它做些什么?谢谢!genome=read_FASTA(“pcr_template.FASTA”)
。尽管您正在创建的“全局”基因组变量与“局部”基因组