【python小技巧1】一文讲尽print函数

print在3.x中是一个内置函数,不需要导入模块。大概率是新手学python接触的第一个函数。(毕竟要 "Hello World!")
注意:本文不再讨论现在差不多过时的python2.x
一、定义
先看函数的定义:
没错,builtins里只有定义,没有实现,因为那是更底层的事情,你懂的。
再看看存根:
很明显:
print可以接受任意个数的“位置参数”,甚至是0个。
最多可以接受sep、end、file、flush共4个“关键字参数”。
print函数返回值永远是None。
二、参数
位置参数
这个 *objects 表示把所有位置参数都“吸入”变量 objects 中,而 objects 是一个元组。可以是任意对象。
关键字参数
sep(sep->separator->分隔符):表示用什么字符串来间隔 objects 中的元素。默认为一个空格 ' ' 。必须为Optional[str]
end:表示用什么字符结束输出。默认为一个换行符 '\n' 。如果你想输出完不换行,你可以指定 end='' 。必须为Optional[str]。如果调用 print() 将输出空行
file:表示输出到那个对象。默认为 sys.stdout ,即显示器。必须是一个具有 write(string) 方法的对象或 None 。但由于要打印的参数会被转换为str,因此 print() 不能用于二进制模式的文件对象,如 BytesIO
flush:输出是否被缓存通常决定于 file,但如果 flush 为 True,流会被强制刷新(把缓冲区的数据强行输出,清空缓冲区)。必须为 bool。python3.3新增
为 False 时先写入缓存,再写入文件,中途出错可能丢失。为 True 时强制写入文件。
简化理解:假期时老师一布置作业,学霸就开始写,没写完就不玩,而学渣要等到开学前一天通宵学习,到上学做不完了,可能还要作业没搞定就交了。用 flush=True 就是学霸了(很不专业,理解意思就行)
三、执行过程
print() 函数的执行过程大致如下:
对于 objects 中的每一个元素 x,调用 str(x)。注意不是repr(x)
用 sep 拼接生成的每一个 str(x)
再在最后加上 end
向 file 指定的对象输出
至于 % 格式化字符串等,其实不是 print 函数的功能,本文不再提及。
END

参考资料:
https://docs.python.org/zh-cn/3.8/library/functions.html
https://www.runoob.com/python3/python-func-print.html
https://blog.csdn.net/weixin_44716687/article/details/105675638
以上内容如有错误,请指出!