Python等价于Ruby的表达式:“puts x+=value”

2024-10-03 11:23:16 发布

您现在位置:Python中文网/ 问答频道 /正文

为了好奇。。。

红宝石:

=>$ 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中可以在一行中完成吗?如果可以,怎么做?


Tags: nilwhileputsirb
3条回答

不能在Python中完全执行的原因与此非常类似,因为在Ruby中,一切都是表达式。

Python语句和表达式之间的差异,并且只能计算表达式(因此打印,我的意思是传递给打印运算符/函数)。

所以这样的代码不能用你展示给我们的Python格式来完成。你所能做的就是找到一些“类似”的方法,把上面的语句写成一个Python表达式,但肯定不是“rubyos”。

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

产生相同结果的一行:

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的while循环非常相似。

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

相关问题 更多 >