Python 打印和输出

简述

在编程实践中,print 的使用频率非常高,特别是程序运行到某个时刻,要检测产生的结果时,必须用 print 来打印输出。

关于 print 函数,前面很多地方已经提及过,可用于写入标准输出。现在,是时候该深入了。

注意:这里强调的是“print 函数”,而不是“print 语句”。

  • 简述
  • 深入 print
  • print 函数
    • 不使用关键字参数
    • 分隔符
    • 结束符
    • 输出重定向

版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820

深入 print

在 Python 2.x 中,print 是一个语句,但是在 Python 3.x 中,它是一个函数。如果 2.x 和 3.x 都使用过,你就会发现差异有多么大。

进入 3.x 的交互式 shell,尝试使用“print 语句”:

[wang@localhost ~]$ python
Python 3.5.2 (default, Mar 29 2017, 11:05:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> print 'Python'
...
SyntaxError: Missing parentheses in call to 'print'

对于大多数人来说,这个错误信息再熟悉不过了。正如上面所提到的那样,print 是 3.x 中的一个函数,与其他函数一样,参数应该被圆括号括起来:

>>> print('Python')
Python

print 函数

要了解 print 函数的用途,可以使用 help() 来寻求帮助:

>>> help(print)
...
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

将对象输出到文本流文件,由 sep 分开,然后以 end 结束。如果 sep、end、file 和 flush 出现,则必须以关键字参数的形式指定。

不使用关键字参数

print 函数可以打印任意数量的值(value1, value2, …),这些值由逗号分隔。

>>> age = 18
>>>
>>> print('age', age)
age 18

很容易发现,两个值之间有一个分隔符 - 空格(默认值),这取决于 sep。

分隔符

如果要重新定义分隔符,可以通过 sep 来指定。

>>> print('age', age, sep='')  # 去掉空格
age18
>>>
>>> print('www', 'python', 'org', sep='.')  # 以 . 分割
www.python.org

结束符

在 print 中,字符串后面会跟一个 \n(换行),前面的示例体现的不是很明显,换一个方式就显示出来了。

>>> for letter in 'Python':
...     print(letter)
...
P
y
t
h
o
n

每打印一个就换行,再打印下一个,这就是 \n 所起的作用。

要改变这种行为,可以给 end 分配一个任意字符串:

>>> for letter in 'Python':
...     print(letter, end='-')
...
P-y-t-h-o-n->>> 

输出重定向

默认情况下,print 的输出被发送到标准输出流(sys.stdout)。通过重新定义 file,可以将输出发送到不同的流(例如:文件或 sys.stderr)中。

>>> f = open('data.txt', 'w')
>>> print('I am a pythoner', file=f)
>>> f.close()

可以看到,在交互式 shell 中,没有得到任何输出,输出被发送到文件 data.txt 中:

[wang@localhost ~]$ cat data.txt
I am a pythoner

也可以通过这种方式将输出重定向到标准错误(sys.stderr)通道:

>>> import sys
>>>
>>> print('age: 18', file=sys.stderr)
age: 18

输出是否缓冲通常由文件决定,但是如果 flush 是 true,则流将被强制刷新。

时间: 2024-10-30 19:26:07

Python 打印和输出的相关文章

python shell使用printf打印为何输出的是长度?

问题描述 python shell使用printf打印为何输出的是长度? 解决方案 这是idle的问题,它只输出返回结果,标准输出并没有重定向到它的模拟器 可用python原生解释器或ipyhon代替 解决方案二: 打印的是返回值 解决方案三: printf的返回值 解决方案四: 在cmd命令行中运行一下你的脚本. msvcrt.printf 输出到标准输出设备上,并不一定是python中的sys.stdout. 在python解析器的交付式环境中sys.stdout不是标准输出设备.

python在控制台输出进度条的方法

  本文实例讲述了python在控制台输出进度条的方法.分享给大家供大家参考.具体实现方法如下: 进度条效果如下所示: ? 1 2 |#############################---------------------| 59 percent done 代码如下: ? 1 2 3 4 5 6 7 8 9 class ProgressBar(): def __init__(self, width=50): self.pointer = 0 self.width = width de

python实现中文输出的两种方法

  这篇文章主要介绍了python实现中文输出的两种方法,实例分析了Python操作中文输出的技巧,需要的朋友可以参考下 方法一: 用encode和decode 如: ? 1 2 3 4 5 6 7 8 9 10 11 import os.path import xlrd,sys Filename='/home/tom/Desktop/1234.xls' if not os.path.isfile(Filename): raise NameError,"%s is not a valid fil

logback打印日志输出到不同文件

问题描述 logback打印日志输出到不同文件 用logback打印日志,想把同一个日志打印成两份一样的,两份文件生成了,但是,只有第一份文件有日志信息,而第二份没有...这是怎么回事?

python读取文件输出乱码(不含中文),好心人帮帮忙

问题描述 python读取文件输出乱码(不含中文),好心人帮帮忙 data = '2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22'print ""data ="" dataprint type(data)james = data.strip().split('')print james 输出的是['2-34xefxbcx8c3xefxbcx9a21xefxbcx8c2.34xefxbcx8c2.45xefxbcx8c3.01

python-为什么这段PYTHON程序的输出为None?

问题描述 为什么这段PYTHON程序的输出为None? def delete(word_list): if word_list: for i in word_list: if i[0] == 'stop': word_list.remove(i) print delete([('noun', 'bear'),('stop', 'the')]) 请各位帮忙看看,多谢 解决方案 delete函数没有返回值,所以是None.改成这样: def delete(word_list): if word_li

爬虫-用python打印网页代码时如何打印frame下的内容

问题描述 用python打印网页代码时如何打印frame下的内容 打印出来为: frame标签下的内容都没有被打印下来 求指点 解决方案 网页打印代码网页打印,分页,隐藏不打印内容的实现 解决方案二: 你是否获取到所有的frame,可能只获取了主frame 解决方案三: 把frame的src路径和当前访问的根路径拼接在一起, 重新当作一个新的路径来访问.

python in-关于python代码美化输出问题

问题描述 关于python代码美化输出问题 刚刚开始学习PYTHON,问一个小白的问题, 如何像很多教程里面这样贴出代码时可以In 和 Out整齐规划的排列在一起并且有序号呢? 解决方案 用rjusthttp://www.runoob.com/python/att-string-rjust.html 解决方案二: 用ipython 安装一个就可以了

python使用calendar输出指定年份全年日历的方法_python

本文实例讲述了python使用calendar输出指定年份全年日历的方法.分享给大家供大家参考.具体实现方法如下: import calendar print "Show a given years monthly calendar" print '' year = int(raw_input("Enter the year")) print '' calendar.prcal(year) print '' 希望本文所述对大家的Python程序设计有所帮助. 以上是