下面取自chapter 4.6 in The Python Tutorial的函数fib()
在定义的末尾包含一行,该行包含print()
,没有明显的原因,因为没有该行的同一函数fib0()
产生相同的输出。那么,在函数定义中包含这一点的原因是什么呢?fib()和fib0()之间的哪个函数更有效
# -*- coding: utf-8 -*-
from __future__ import print_function
def fib(n):
"""print a fibonacci series up to n"""
a, b = 0, 1
while a < n:
print(a, end=', ')
a, b = b, a+b
print()
def fib0(n):
"""print a fibonacci series up to n"""
a, b = 0, 1
while a < n:
print(a, end=', ')
a, b = b, a+b
fib(2000)
fib0(2000)
输出:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597,
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597,
第一个实现结束时的未修饰的
print()
调用确保输出换行符print(a, end=', ')
在输出a
之后加上逗号和空格end
的默认值是\n
如果你把你的呼叫码改成
你会更容易观察到差异
区别在于
print()
。Fib有这个功能,print函数会自动在末尾放一个换行符。所以fib将输出一个额外的换行符,而fib0不会。例如:输出:
没有换行符并打印一个连续列表
相关问题 更多 >
编程相关推荐