<p>警告:极端新手问题</p>
<p>我好像一直在想函数是一个配方。在我的世界里,程序是一个配方框,一些配方(函数)调用其他配方(其他函数)。处理器通过将指令写入RAM并处理它们来开始执行主配方。比如,早餐薄饼。你叫朱莉娅·查尔兹的早餐薄饼食谱。你得做一次绉面糊。然后,当你仍然有绉面糊,你迭代地做薄饼。同时,你可以做各种各样的水果制品。在</p>
<p>我显然不明白。我刚刚运行了pythonwiki解决方案来实现Euler<a href="https://projecteuler.net/problem=2" rel="noreferrer">Problem 2</a>(小于400万的偶数斐波纳契数之和)的项目pythontutor.com网站. 我想我突然想到了什么。似乎每次你变出一个食谱,你不只是使用同一个处理器,你得到了一个侏儒与一些罐工作的功能。pots是变量,gnome会计算出他的配方,如果调用函数需要返回值,则gnome会向调用者显示这些pots的内容。然后调用者可以返回,找出更多的东西,并向调用者显示返回值。在</p>
<p>所以假设艾尔打电话给鲍勃做薄饼。鲍勃做面糊,叫查理来煮。查理做了一个薄饼,把它给了鲍勃,鲍勃把它给了艾尔,然后回到查理身边。谁还存在!艾尔不知道鲍勃把查理藏在厨房里了,但即使查理做了第一道绉纱,他还是在厨房里,知道怎么做绉纱,知道他还剩下多少绉面糊。尽管他已经归还了第一条绉纱。在</p>
<p>有人能帮我弄清楚吗?在</p>
<p>下面是pythonwiki中的代码</p>
<pre><code> def fib():
x,y = 0,1
while True:
yield x
x,y = y, x+y
def even(seq):
for number in seq:
if not number % 2:
yield number
def under_a_million(seq):
for number in seq:
if number > 1000000:
break
yield number
print sum(even(under_a_million(fib())))
</code></pre>
<p>这是<a href="http://pythontutor.com/visualize.html" rel="noreferrer">http://pythontutor.com/visualize.html</a></p>