我正在学习Python,并试图解决Exercism提供的一些练习。如果我运行一次该函数,该代码示例将正常工作。我希望proteins(string)
从一个空列表开始时会更频繁地被调用,但是它会继续早期生成的列表。我找到了一种解决方法,但不了解Python的这种行为。有人可以给我解释一下吗?
aminoacids = {
'AUG' : 'Methionine', 'UUU' : 'Phenylalanine', 'UUC' : 'Phenylalanine', 'UUA' : 'Leucine',
'UUG' : 'Leucine', 'UCU' : 'Serine', 'UCC' : 'Serine', 'UCA' : 'Serine', 'UCG' : 'Serine',
'UAU' : 'Tyrosine', 'UAC' : 'Tyrosine', 'UGU' : 'Cysteine', 'UGC' : 'Cysteine', 'UGG' : 'Tryptophan',
'UAA' : 'STOP', 'UAG' : 'STOP', 'UGA' : 'STOP'
}
def proteins(strand, polypeptide = []):
global aminoacids
if len(strand) < 3 or aminoacids[strand[0:3]] == 'STOP':
return polypeptide
polypeptide.append(aminoacids[strand[0:3]])
return proteins(strand[3:], polypeptide)