a,b = b,a + b好蟒蛇?

时间:2014-03-11 22:50:59

标签: python coding-style

a, b = b, a + b 

我从Python中的“建立技能”中选择了这种编码风格。来自PHP和Obj-C这种类型的多变量赋值是不可用的(至少不是我见过的)。但对我来说似乎更合乎逻辑。毕竟,为什么我必须分配' a'一个持有变量'在更换之前。

问题是,这种编码风格是pythonic吗?

以下是Fibonacci程序示例:

a, b = 1, 2
output = str(a)
while b<=100:
    output = output + " " + str(b)
    a, b = b, a + b

print output

而且,您发现的最佳方法是什么帮助您编写更多pythonic代码?

2 个答案:

答案 0 :(得分:6)

是的,它是pythonic。事实上,Raymond Hettinger在他的精彩演讲Transforming Code into Beautiful, Idiomatic Python中谈到了这一点。如果您对编写pythonic代码感兴趣,那么这是一个很好的谈话。

要回答第二个问题,我想阅读python standard library的来源。正如您所料,大多数模块编写得非常好。例如,collections模块很好阅读。

答案 1 :(得分:6)

元组拆包是pythonic,但你的代码片段的其他部分不是。这里使用generator稍作修改以避免(和分离)字符串连接:

def fib(k=100):
    """ Generate fibonacci numbers up to k. """
    a, b = 1, 2
    while a <= k:
        yield a
        a, b = b, a + b

print(' '.join(map(str, fib())))
# prints: '1 2 3 5 8 13 21 34 55 89'