输入和输出
如果“print”是一个函数,那么他一定会有返回值,我们看:
换句话说:不管你打印的是什么,“print”都不会有返回值。毕竟你不是为了得到返回值而打印的,而是为了它的另一个作用。
那么“print”的实参呢?已经看到我们可以传递任意数量的实参,它们都会被打印出来。但是有一些可选的形参我们也是可以传递的。
改变输出项之间的字符串显示和改变放在输出末尾的代码,这两点是联系非常紧密的,他们可以让我们自定义我们在前面看到的行为。
例如,参数“sep”,默认为“”(空格字符),被放在打印项之间。我们可以将其设置为任何字符串,包括多字符字符串:
请注意,“sep”放在“print”的参数之间,而不是参数的每个元素之间。因此,在第三个示例中,“**”位于列表之间,而不是列表的整数元素之间。
如果你想让打印的参数一次相连,可以把“sep”设为空字符串:
类似的,参数“end”的默认值是“\n”(换行),但是可以包含任意字符串。他决定了在“print”结束之后打印什么。
例如,如果你想在你打印之后额外空几行出来,就改一下“end”的值就会产生新行:
但是,反过来讲如果你不想在输出之后加新行,吧“end”的值设成空字符串就可以了:
注意,在python交互命令行中,使用空字符串打印内容意味着下一个“>>>”提示出现在所打印内容之后。毕竟,您并没有要求在您所写的内容之后有一个新行,而python遵从了您的请求。
当然,你可以传递根本不涉及换行的“end”值。例如,假设您希望将多个字段输出到屏幕,每个字段打印在一行中:
默认情况下,“print”将其数据发送到标准输出,在python中称为“sys.stdout”。当“sys”模块与python一起自动加载时,它的名称不可用,除非你明确了“import sys”。
“print”函数允许您使用“file”参数指定要写入的另一个类似文件的对象(即,遵循适当协议的对象)。对象必须是可写的,除此之外,您可以使用任何对象。
例如:
在这种情况下,输出被写入一个文件。但我们也可以写入一个Stringio对象,例如,它的行为类似于一个文件,但不是一个文件。
注意,如果我在上面的示例中没有关闭“f”,输出就不会到达文件中。这是因为默认情况下,python会缓冲所有输出;每当写入文件时,只有当缓冲区填满(并刷新)时,显式调用“flush”方法时,或关闭文件时(从而隐式刷新)才实际写入数据。将“with”结构与文件对象一起使用就会关闭它,从而刷新缓冲区。
但是,还有另一种刷新输出缓冲区的方法:我们可以将一个True值传递给“print”中的“flush”参数。在这种情况下,输出会立即刷新到磁盘,然后写入。这听起来不错,但请记住,缓冲的目的是减少磁盘和计算机I/O系统上的负载。所以需要的时候才能刷新,但不要一直这样做——除非你是按小时付钱的,而且更慢些对你有好处。
下面是一个有或无冲洗的打印示例:
您可能注意到这里有一个小的不一致:“print”写入文件,默认情况下为“sys.stdout”。如果我们不刷新或关闭文件,输出将被缓冲。那么,当我们打印到屏幕上时,为什么不需要冲洗(或者关闭,这不是一个好主意)?
答案是“sys.stdout”是由python专门处理的。正如python文档所说,它是“行缓冲的”,这意味着每次发送换行符(“\n”)时,都会刷新输出。只要你把东西打印到“sys.stdout”就会以新行结尾——为什么不这样做呢?——你不会注意到缓存。
还记得Python2吗?
在我写这篇文章的时候,是2019年1月,距离不再支持或维护python 2之前还有不到12个月的时间。这并没有改变我的许多客户仍在使用python 2的事实(因为重写大型代码库既不可行也不值得)。如果您仍在使用python 2,那么应该尝试转移到python 3。
事实上,让用户从python 2到3的因素之一就是“打印”的不同。
首先,python2中的“print”是一个语句,而不是表达式。这意味着2中的括号是可选的,而3中的括号是强制的——当人们从2移动到3时,首先要学习的内容之一。
这也意味着在python2中“print”不能传递给其他函数。在Python3中是可以的。
python 2的“print”语句没有可以处理的参数(或默认值)。你想打印到文件而不是“sys.stdout”?将其分配给“sys.stdout”以使用“print”——或者只使用文件的“write”方法写入文件。你想让“打印”在打印后降行?在行尾加一个逗号。(是的,这是真的;这很难看,但是管用。)
如果您正在使用python 2,并且想体验一下python 3的打印功能,那该怎么办?您可以将此行添加到代码中:
from __future__ import print_function
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
(https://bbs.csdn.net/topics/618317507)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!