私信  •  关注

John La Rooy

John La Rooy 最近创建的主题
John La Rooy 最近回复了
14 年前
回复了 John La Rooy 创建的主题 » 为不同版本的python维护不同版本的codebase的工作流

我将尝试维护一个分支来覆盖所有python 2.4-2.6

区别并不是很大,毕竟如果你必须为2.4编写一堆额外的代码来做一些在2.6中容易的事情,那么从长远来看,使用2.5和2.6的2.4版本对你来说就不那么重要了。

python 3应该有一个不同的分支,您仍然应该尽可能多地保持代码的通用性。

14 年前
回复了 John La Rooy 创建的主题 » 命名参数:c vs python

python允许您将未指定的命名参数“捕获”到dict中,这非常方便

>>> def f(**kw):
...     print kw
... 
>>> f(size=3, sides=6, name="hexagon")
{'sides': 6, 'name': 'hexagon', 'size': 3}
12 年前
回复了 John La Rooy 创建的主题 » 代码在Python中的工作方式。(forloop)[副本]

这是一个 list comprehension

foo 将是筛选的列表 bar 包含具有属性occupants>1的对象

酒吧 可以是一个 list , set , dict 或任何其他不能

下面是一个要澄清的例子

>>> class Bar(object):
...   def __init__(self, occupants):
...     self.occupants = occupants
... 
>>> bar=[Bar(0), Bar(1), Bar(2), Bar(3)]
>>> foo = [x for x in bar if x.occupants > 1]
>>> foo
[<__main__.Bar object at 0xb748516c>, <__main__.Bar object at 0xb748518c>]

所以foo有2个 Bar 对象,但我们如何检查它们是哪些对象?让我们添加一个 __repr__ 方法 酒吧 所以它更具信息性

>>> Bar.__repr__=lambda self:"Bar(occupants={0})".format(self.occupants)
>>> foo
[Bar(occupants=2), Bar(occupants=3)]

您可以推迟查找 f1 如果不希望污染类命名空间,则使用lambda函数

class A(object):

        def f1(self):
                return []

        test1 = property(lambda x:x.f1())
13 年前
回复了 John La Rooy 创建的主题 » python语言的细微差别[复制]

例如,通常的方法是这样的

try:
    value = cache[key]
except KeyError:
    value = cache[key] = redownload(key)