Pickle
模块和+str()
功能有什么区别?我刚刚写完了下面的代码
def orf(codons):
seqlist = []
flag = False
start = ['ATG']
stop= ['TAA','TGA','TAG']
for i in codons:
if i in start:
flag = True
if flag == True:
seqlist.append(i)
if i in stop:
flag = False
return seqlist
frame1 = string
codons = [frame1[i:i+3] for i in range (0, len(frame1),3)]
one = orf(codons)
seq1 =''.join(one)
output1 = 'Length of 1st open reading frame is:'+str(seq1)
#seq1 =''.join(one)
seq_list.append(seq1)
length1 = len(seq1)
output_1 = '\nSize of 1st open reading frame is:'+str(len(seq1))
length_list.append(length1)
out.write(output1)
out.write(output_1)
我使用+str()
函数以字符串的形式获取函数(orf (codons))
。这是否可以使用Pickle
。我确实阅读过python教程,但却无法理解它的意思。如果你可以解决我的代码,我会很棒。
答案 0 :(得分:2)
没有+str
功能。
您显示的代码段包含表达式'Length of 1st open reading frame is:'+str(seq1)
,该表达式由字符串,+
运算符和对类str
的调用组成。
Pickle是一个允许(大多数)python对象被序列化为文件(或流)的模块。
答案 1 :(得分:0)
str
函数与pickle
模块完全不同。
str
将任何Python对象转换为字符串,通常是以人类可读或“友好”的方式(还有repr
函数,这样做不那么友好,更专注于机器-可读性)。因此str([1,2,3])
会返回字符串'[1, 2, 3]'
。自定义类可以通过覆盖特殊的str
方法来控制__str__
将其转换为字符串的方式。
pickle
是为Python对象的序列化而设计的。这也可能涉及将对象转换为字符串,但它完全专注于机器可读性,而不是人工解释。事实上,您从多种形式的酸洗(有几种不同的协议)中获得的字符串包含无法直接查看为文本的二进制值。 (pickle
也有自定义类可以绑定的各种钩子,但它们比__str__
复杂一点。)
根据您的情况,pickle
似乎不是您想要的。使用str
可以将整数,列表和其他对象转换为字符串进行打印。字符串(包括使用引号创建的文字字符串和从str
获得的字符串)可以使用+
运算符连接(尽管您可能需要考虑使用string formatting)。请注意,如果您已使用str.join
方法将列表转换为字符串,则无需再次对结果运行str
(正如您在代码中对seq1
所做的那样在你的问题中)。