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代码?
答案 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'