小编Ala*_*ain的帖子

你会从cvs迁移到svn还是直接迁移到git或hg?

我不知道这是否是正确的论坛.

我的公司使用CVS作为版本控制系统.我们计划转向更现代的版本控制系统.作为风险最小的解决方案,您会建议什么?

我的想法是使用Subversion但我也听到很多关于Git和Mercurial的好东西

但是,我们是一家小公司,我们不需要分布式版本控制系统.Git或Mercurial在Subversion方面有什么优势,除了它们是分布式的?

svn git version-control mercurial

11
推荐指数
2
解决办法
2483
查看次数

set和frozenset的继承行为似乎有所不同

有人可以解释以下行为:

class derivedset1(frozenset):
    def __new__(cls,*args):
        return frozenset.__new__(cls,args)  

class derivedset2(set):
    def __new__(cls,*args):
        return set.__new__(cls,args)    

a=derivedset1('item1','item2') # WORKS 
b=derivedset2('item1','item2') # DOESN'T WORK

Traceback (most recent call last):
  File "inheriting-behaviours.py", line 12, in <module>
    b=derivedset2('item1','item2') # DOESN'T WORK
TypeError: derivedset2 expected at most 1 arguments, got 2
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,您可以更改冻结集的构造函数,而对于可变集的构造函数则不可能.

python inheritance immutability built-in-types

7
推荐指数
1
解决办法
835
查看次数

bug或功能:open和io.open不可互换

我一直以为open并且io.open可以互换.
显然不是,如果我相信这个片段:

import ctypes, io

class POINT(ctypes.Structure):
    _fields_ = [("x", ctypes.c_int),("y", ctypes.c_int)]
# THIS WORKS
with open("mypoints.bin", "wb") as f: 
    for i in range(10):
        p = POINT(i,10-i)
        print p.x, p.y
        f.write(p)
# THIS FAILS 
with io.open("mypoints.bin", "wb") as f:
    for i in range(10):
        p = POINT(i,10-i)
        print p.x, p.y
        f.write(p)

0 10
Traceback (most recent call last):
  File "D:\test.py", line 10, in <module>
    f.write(p)
  File "c:\Python26\lib\io.py", line 1070, in write
    self._write_buf.extend(b)
TypeError: 'POINT' object is not …
Run Code Online (Sandbox Code Playgroud)

python api file-io

5
推荐指数
1
解决办法
1240
查看次数

python专家的问题:使用生成器调用时代码不起作用

我有一个小片段,无法以莫名其妙的方式工作.
目的是生成两个或更多个序列的所有组合.
它在使用列表调用时有效,但在使用生成器调用时不起作用.

def comb(seqs):
    if seqs:
        for item in seqs[0]:
            for rest in comb(seqs[1:]):
                yield [item] + rest
    else:
        yield []

if __name__=="__main__":
    x=[1,2]
    y=[3,4]
    print list(comb([x,y])) # prints [[1, 3], [1, 4], [2, 3], [2, 4]]

    def gen1(): yield 1; yield 2
    def gen2(): yield 3; yield 4
    x=gen1()
    y=gen2()
    print list(comb([x,y])) # prints [[1, 3], [1, 4]  WHY ????
Run Code Online (Sandbox Code Playgroud)

python generator

3
推荐指数
1
解决办法
174
查看次数