Я пытаюсь написать скрипт на Python с использованием BioPython, который читает файл FASTA и создает список необработанных последовательностей ДНК в виде записей.
Поскольку этот код будет использоваться во многих других сценариях, которые я буду писать, я хочу, чтобы функция для этой цели находилась в отдельном файле 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
Когда я вызываю эту функцию в Python из cmd, функция работает и читает файлы, генерирующие список, как я хочу. Однако, если я снова попытаюсь получить доступ к списку genome
, я получу ошибку Traceback | NameError: name 'genome' not defined
.
Может кто-нибудь объяснить, почему это происходит, даже если я поставил оператор return genome
? И что я могу сделать, чтобы решить эту проблему?
genome
. Вы должны что-то сделать с возвращаемым значением. - person BrenBarn   schedule 29.06.2014genome = read_fasta("pcr_template.fasta")
. Хотя эта "глобальная" переменнаяgenome
, которую вы создаете, не имеет ничего общего с "локальной" переменнойgenome
, кроме имени ("локальная"genome
существует только до тех пор, пока функцияread_fasta
не завершена), лучше назовите его как-нибудь иначе, напримерresult = read_fasta("pcr_template.fasta")
. Теперь, когда вы попытаетесь получить доступ к переменнойresult
, у вас будет списокgenome
. - person Reloader   schedule 29.06.2014