-3

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 教程,但无法理解它的含义。如果你能解决我的代码,我会很棒。

4

2 回答 2

2

没有+str功能。

您显示的代码片段包含由字符串、运算符和对 class 的调用'Length of 1st open reading frame is:'+str(seq1)组成的表达式。+str

Pickle 是一个模块,它允许(大多数)python 对象被序列化为文件(或流)。

于 2012-11-04T19:45:52.870 回答
0

str函数的作用与pickle模块完全不同。

str将任何 Python 对象转换为字符串,通常以人类可读或“友好”的方式(还有一个repr函数这样做的友好性稍低,更注重机器可读性)。所以str([1,2,3])返回字符串'[1, 2, 3]'str自定义类可以通过覆盖特殊__str__方法来控制如何将它们转换为字符串。

pickle另一方面是为 Python 对象的序列化而设计的。这也可能涉及将对象转换为字符串,但它完全专注于机器可读性,而不是人工解释。事实上,从多种酸洗形式(有几种不同的协议)中获得的字符串包含不能直接作为文本查看的二进制值。(pickle也有各种自定义类可以绑定的钩子,但它们比 .)要复杂一些__str__。)

对于您的情况,pickle似乎不是您想要的。使用str将允许您将整数、列表和其他对象转换为字符串以进行打印。字符串,包括使用引号创建的文字字符串和从中获取的字符串,都str可以使用+运算符连接起来(尽管您可能需要考虑字符串格式)。请注意,如果您已经使用该str.join方法将列表转换为字符串,则无需再次运行结果(正如您在问题代码中str所做的那样)。seq1

于 2012-11-04T19:50:46.127 回答