yield的语法规则是:
在yield这里暂停函数执行,并返回yield后面表达式的值(默认为None),直到被next()再次调用时,从上次暂停的yield代码处继续往下执行。当没有可继续next()时,抛出异常,该异常可被for循环处理。
def fib(n):
def fib(n):
a, b = 0, 1
i = 0
while i < n:
yield b
a, b = b, a+b
i += 1
if __name__ == '__ma
1、yield,将函数变为 generator (生成器)
例如:斐波那契数列
def fib(num):
a, b, c = 1, 0, 1
while a <= num:
yield c
b, c = c, b + c
a += 1
for n in fib(10):
print(n, end=' ')
# 1 1 2 3 5 8 13 21 34 55
2、Iterable
所有可以使用for循环的对象,统称为 Iterable (可迭代
这篇文章主要介绍了python函数定义和调用过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
我们可以创建一个函数来列出费氏数列
>>> def fib(n): # write Fibonacci series up to n
... """Print a Fibonacci series up to n."""
... a, b = 0, 1
... while a >> #
cacheskell
这是我的函数式编程语言,看起来像Haskell,但是它缓存了每个函数。
例子
在此示例中,我们将看到递归斐波那契序列函数。 大多数编程语言都需要花费很长时间,但是cacheskell将缓存所有函数调用,从而使其相对较快。
fib x
| (equal x 0) = 0
| (equal x 1) = 1
| true = (add (fib (sub x 1)) (fib (sub x 2)));
p x y
|
斐波那契数列
当年,典型的递归题目,斐波那契数列还记得吗?
def fib(n):
if n==1 or n==2:
return 1
else:
return fib(n-1)+fib(n-2)
当然, 为了程序健壮性,加上 try...except...
def fib(n):
if isinstance(n, int):
print('兄弟,输入正整数哈')
return
try:
if n==1 or n==2:
r