本文以Python3以上为学习基础。
目录
1、常规输出
2、print()函数
(1)参数1:*objects -- 对象
(2)参数2:sep -- 用来间隔多个对象
(3)参数3:end -- 用来设定以什么结尾。
(4) 参数4:file -- 要写入的文件对象。
(5) 参数5:flush -- 输出是否被缓存。
print:输出语句
print 在 Python3.x 是一个函数,但在 Python2.x 版本不是一个函数,只是一个关键字。
常规输出很简单就只:print(变量名)。
既然print() 是一个函数,那么肯定对应的函数定义。
以下是 print() 函数的定义:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
- objects -- 对象,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔
- sep -- 用来间隔多个对象,默认值是一个空格。
- end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
- file -- 要写入的文件对象。
- flush -- 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。
以上是print()函数的语法和参数详解,是来自菜鸟教程。
下面我们分别对各个参数进行尝试:
表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔
也就是说打印多个对象。
上面例子,同时打印 tmp 和 tmp1。可以看到同时打印出来,中间是空格分割。
为什么是空格分割?
这和下面的第二个参数有关。
默认值是一个空格。
因此,如果我们变更多个对象的间隔方式。
可以看到这时候我们设置自定义的多对象间隔是 $。结果输出就发生改变。
这时候我们把两个变量分开输出。
我们发现两个变量的结果换行了。但是我们在输出tmp变量后面没有设置换行符。
为什么还换行了,结果不应该是12依次一排输出吗?
因为它和第三个参数有关。
默认值是换行符 \n,我们可以换成其他字符串。
可以看到默认变量结尾换行符。
上面例子,我们自定义结果 tmp 结尾是 $和换行符。
因此结果中在 1 的后面跟着 $和换行符。2 对应换行输出。
我们输出变量都是对应的显示在编辑器的输出位置。
如果我们需要把某些变量输出到文件中呢?比如你通过打印 log 的方式调试代码。
这时候和第四个参数有关。
这时候看到出现了错误,意思是没有写权限。
而且提示这个对象是str(字符串)。
这样就很明显不对。我们要的是文件。不是字符串。
原因其实很简单:我们平时使用使用文件的时候,第一步就是打开文件。同样的道理,我们程序也要打开文件。
因此使用open()函数先打开文件。(open函数的用法后续介绍)
可以看到我们用open函数打开函数给了f。这里的f是文件句柄。这个也后续说。
注意打开文件一定要再close文件。否则就会造成文件句柄泄露。
可能你听不懂。我们做个验证。
这个就是我创建好的文件。
当前的文件内容是空的。
下面我们执行下面的代码。
注意:我只是打开了文件,没有关闭文件。
为了方便查看。加了一个代码执行结束的提示。
下面我们查看zxc.txt文件的内容。
我们成功输出结果:1 2$
我们下面试着手动修改以下文件。
看到没有,我们的文件被占用。但是是什么占用了呢?
我们利用Windows的资源监视器看看。
很明显,python占用这个文件。原因就是我们使用open函数带开了这个文件。没有关闭,这个文件一直被占用。
因此我们在使用open函数的时候一定要close文件。否则你一直开着它,就算你不懂也应该能想到一定有问题。具体情况后续介绍。
我们现在知道要close到文件了,但是怎么做呢?我们试试看。
利用前面的文件句柄 f 进行close。
这时候我们使用Windows的资源监视器看看这个文件的相关进程。
结果很明显。文件相关进程结束了。
输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。
我们试试看。
我们利用for循环来循环打印数字1到9。但是我们是一个一个打印。就先出现数字1,过一会再出现数字2。
我们先看看没有flush的正常情况。
很明显,这根本就不是按着123……的顺序依次打印出来的,1和2是同时出现的。
下面我们加上flush参数看看。
可以看到很明显,123……依次打印。(可能有点快,麻烦仔细看看可以看出来)
以上就是关于print函数的五个参数详解。
如果有错误请及时指出。