Python 语言的初学者, 特别是"惊奇者"(也就是那种第一眼就被毫无意义的某些特性吸引, 之后持续说服自己的人)认为 Python 不需要 C 语言的 for 语句, 因为他们能用优雅的 Python for 来代替类 C 的 for.
Cpy 的循环方式:
for(i=s; i<num; i+=step){ }
Python 的循环方式:
for i in range(num)[s:e:step]:
最近, 我写了一个循环 100000000 遍的代码, 不幸的是(也正是所预计的), Python 把机器内存吃光了, 并让我的 Windows 报虚拟内存不足的错误. 可怜的 Python 只能被操作系统无情地 kill 掉而不给任何机会.
而 Cpy 的循环却毫无压力, 只占用了很小的内存.
反正我这里用不了。因此,才要用yield做自己的generator。
不过呢,我希望您不要转移话题,因为我是建议您看看那篇文章,然后再交流。
当然,如果您的水平很高,理解很深入,是没必要看的。 Reply
for(i=s; i<num; i+=step){
}
产生 i 的逻辑,置入generator中。
定义:
def frange(start, stop, step):
<< Implementaion >>
而用的时候,只需要
for i in frange(start, stop, step):
print i Reply
我觉得,如果您要创建一个新式语言,必须有自己的整套框架。而并非东拼西凑,做出一个四不像。
又或者说Brooks的人月神话吧,那个作者似乎非常强调一致性。
您可以认为我有些照本宣科。但我还是希望您能够仔细考虑,设计出一个较好的语言。 Reply
真是失败。 Reply
我以前对generator的理解也不是很懂。后来,看了一本叫python cookbook的书,里面就有专门讲generator和iterator的章节。例如,要产生一个浮点型的序列,我们就可以用generator,而且,关键在于,我们的generator可以是无限用下去的。
后来,看来一位大牛的介绍,http://www.dabeaz.com。他在08年的PyCon中,就介绍了generator,http://www.dabeaz.com/talks.html。
当然,我本身技术不如您。但是generator的应用,可以在数据流动方面如管道一般优雅。
因此,我一直是问您,在您的Cpy中是否应该考虑这些? Reply
我其实是给您的语言(Cpy)一个建议,就是关于生成器(Generator)的。
我分析了您的代码,发现似乎没有这样的功能。
仔细看了您的简介后,您的确是经验丰富。
惭愧,纠缠了您这么久。 Reply
and C语言之所以要有main函数是因为它是一门需要编译的语言,要翻译成二进制,程序需要有个入口点,main函数正是这个入口点。而Python是一门动态的语言,所以可以省去。 Reply
真是惭愧,的确不懂。 Reply