2014-06-29 102 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(或您的函數已返回的任何內容)。