Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
相当于Ruby的Python';s的表达方式是:“引用;放置x+;=“价值”;_Python_Ruby_Language Comparisons - Fatal编程技术网

相当于Ruby的Python';s的表达方式是:“引用;放置x+;=“价值”;

相当于Ruby的Python';s的表达方式是:“引用;放置x+;=“价值”;,python,ruby,language-comparisons,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 =>$irb 1.8.7:001>放置x=2 2. =>零 1.8.7:002>将x+=2,而x

看在好奇的份上

在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
=>$irb
1.8.7:001>放置x=2
2.
=>零
1.8.7:002>将x+=2,而x<40
4.
6.
8.
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
它很方便


在Python中,是否可以在一行中实现这一点?如果可以,如何实现?

这在Python中是不可能的;不能将语句(
x+=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对象”,它生成下一个项而不存储它们(如
range
所做的),这与OP的
while
循环非常相似。

在Python中不能完全或非常类似地执行相同操作的原因是,在Ruby中,一切都是表达式

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

因此,这样的代码不能以您向我们展示的形式在Python中完成。您所能做的就是找到一些“类似”的方法,将上面的语句作为Python表达式写下来,但绝对不会是“rubyus”


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

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

from __future__ import print_function

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

我不知道ruby,但我希望有一天能学习(请原谅我的无知)——这与
范围(4,40,2)
有什么不同?或者一个等价的生成器函数?这里的关键是,正如其他人回答的那样,ruby允许将语句作为表达式运行,因此可以在更少的空间内完成更多的工作。我想知道,仅仅出于好奇,是否有可能在python中实现类似的功能。您回答的前两个Pharmagraphs解释了这一切。我不是想用Python找到一种“Rubyous”的方法来做一些事情,我只是觉得比较这两种语言很有启发性。在python中有没有一种方法可以在一行中实现相同的循环?我从来没有在python中使用过这种表达式,但据我所知,我不能在python中使用这种表达式,所以我想知道这是否可能。我不确定我是否理解您的ZoP引用。给定的代码隐含了什么?“对于xrange(4,42,2)中的i:print i”also@nemesisdesign更妙的是:)