print()函数在特定Python教程examp中的作用

2024-09-30 01:36:10 发布

您现在位置:Python中文网/ 问答频道 /正文

下面取自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,


Tags: to函数in定义def原因fibonacciend
2条回答

第一个实现结束时的未修饰的print()调用确保输出换行符print(a, end=', ')在输出a之后加上逗号和空格end的默认值是\n

如果你把你的呼叫码改成

fib(2000)
print('|done|')
fib0(2000)
print('|done|')

你会更容易观察到差异

区别在于print()。Fib有这个功能,print函数会自动在末尾放一个换行符。所以fib将输出一个额外的换行符,而fib0不会。例如:

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

fib0(2000)
fib(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, 

没有换行符并打印一个连续列表

相关问题 更多 >

    热门问题