Python相当于Ruby的表达式:“puts x + = value”

时间:2012-09-04 13:36:39

标签: python ruby language-comparisons

出于好奇心的缘故......

在Ruby中:

=>$ irb
1.8.7 :001 > puts x = 2
2
 => nil 
1.8.7 :002 > puts x += 2 while x < 40
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40

非常方便。

是否有可能在Python中以单行执行此操作,如果是,如何?

4 个答案:

答案 0 :(得分:6)

你不能在Python中完全非常相似的原因是因为在Ruby中,一切都是表达式

Python区分语句和表达式,只能表达式(因此打印,我的意思是传递给打印操作符/函数)。

所以这样的代码无法以你向我们展示的那种形式在Python中完成。您可以做的一切就是找到一些“类似”的方式将上面的语句写下来作为Python表达式,但它肯定不会是“Rubyous”。

恕我直言,在Python中,这种行为是不可能的(如本用例中所述),很好地遵循“显式优于隐式”的Python规则的禅。

答案 1 :(得分:2)

单线程产生相同的结果:

for x in xrange(4,42,2): print x

给出:

4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40

xrange是一个内置函数,它返回一个“xrange对象”,它生成下一个项目而不是全部存储它们(如range那样),这与OP的{{1}非常相似}循环。

答案 2 :(得分:1)

这在python中是不可能的;您不能使用语句(x += 2)作为要打印的表达式。

答案 3 :(得分:1)

关于赋值不是Python中的表达式的评论保留了其他答案, 可以用Python做到这一点:

from __future__ import print_function

[print(x) for x in range(0,42,2)]