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

sno*_*und 4 python coding-style

a, b = b, a + b 
Run Code Online (Sandbox Code Playgroud)

我从"使用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
Run Code Online (Sandbox Code Playgroud)

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

jme*_*jme 6

是的,它是pythonic.实际上,Raymond Hettinger在他的精彩演讲" 将代码转换为美丽的,惯用的Python"中谈到了这一点.如果您对编写pythonic代码感兴趣,那么这是一个很好的谈话.

为了回答你的第二个问题,我想阅读python标准库的源代码.正如您所料,大多数模块编写得非常好.collections例如,该模块很好阅读.


mik*_*iku 6

元组拆包是pythonic,但你的代码片段的其他部分却没有.这是使用生成器稍微修改以避免(和分离)字符串连接:

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'
Run Code Online (Sandbox Code Playgroud)