Оператор возврата python со строками и функциями
def intron_comparison(retained_introns_file, non_retained_introns_file):
with open(retained_introns_file, 'r') as r, open(non_retained_introns_file, 'r') as nr:
r_gc = avg_gc(r)
nr_gc = avg_gc(nr)
r_avglen = intlength(r)
nr_avglen = intlength(nr)
r_percdiv = intdiv(r)
nr_percdiv = intdiv(nr)
return ('The GC content for non retained introns is ' + nr_gc + '\n' +
'The GC content for retained introns is ' + r_gc + '\n' +
'The average length of non retained introns is ' + nr_avglen + '\n' +
'The average length of retained introns is ' + r_avglen + '\n' +
'The percent of non retained introns divisible by 3 is ' + nr_percdiv + '\n' +
'The percent of retained introns divisible by 3 is ' + r_percdiv + '.')
Выше написана функция, которая объединяет 3 другие функции и сравнивает 2 файла. Я хотел бы, чтобы оператор return обозначал дескриптор перед каждым значением, как вы можете видеть, но я получаю следующую ошибку:
TypeError: Can't convert 'NoneType' object to str implicitly
относительно этой последней строки. Что мне не хватает?
РЕДАКТИРОВАТЬ: код работает чудесно, у меня просто проблемы с этим оператором возврата - я предполагаю, что это какая-то маленькая вещь, которую я пропускаю? Заранее спасибо за вашу помощь!
1 ответ
Для большой струны, как то, что у вас есть, сделать несколько вещей.
Сначала используйте """ """ вместо того, чтобы пытаться построить его таким, какой вы есть.
Во-вторых, используйте% style или format для интерполяции значений в строки. Более новая рекомендация Python - использовать формат.
return """The GC content for non retained introns is {nr_gc}
The GC content for retained introns is {r_gc}
The average length of non retained introns is {nr_avglen}
The average length of retained introns is {r_avglen}
The percent of non retained introns divisible by 3 is {nr_percdiv}
The percent of retained introns divisible by 3 is {r_percdiv}.
""".format(r_gc = avg_gc(r),
nr_gc = avg_gc(nr),
r_avglen = intlength(r),
nr_avglen = intlength(nr),
r_percdiv = intdiv(r)
nr_percdiv = intdiv(nr))