在编代码时,发现学了很多语句,对print里反而只知道些 格式化 和 end= 一类的老生常谈的东西,在的print进行再学习后get了一些新姿势,从而对print在怎么来的有了自己的答案
以下是我get知识点的运用(理论知识放在后面):
1.用print来写入文件:
把文件打开,给出写入权限,把写入内容以utf-8进行编码
f = open("./python基础篇.txt", 'w',encoding='utf-8')
for i in range(10):
#该语句是将print输出语句,输出到文件里
print("第{0}条数据".format(i), file=f)
2.用print来显示加载进度:
import time
inner = 500
for n in range(inner+1):
loading = round(n/inner*100)
#通过加\r每次输出完跳回,用end=""替换默认的换行,只要数字在改变,因此表面上展现进度刷新
print(f"\r加载中{loading}%",end="")
#由于没有放入复杂程序,如果直接打印,展示不出效果,因此用time.sleep模拟加载过程
time.sleep(0.02)
这里附加新手易错点:
- print内为赋值语句:报错TypeError(这里要除了 sep='' or end='' 这两默认参数)
- print内为函数调用如 print(l.append(1)) 由于这类对数据内部进行改造,无返回值,return被默认为none
- print(sorted(lis))对数据进行改造,返回值是一个新的副本
以下是我的学习过程:
对print你必须知道的:在python中,print语句实现打印,从技术角度来说,这是把一个或多个对象转换为其文本表达式形式,然后发送给标准输出流或者类似的文件流,更详细的说,打印与文件和流的概念紧密相连。
print(self, *args, sep=' ', end='\n', file=None)
下面是不常使用的参数,官方的解释
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.
下面是机翻:
文件:类似文件的对象(流);默认为当前sys.stdout。
sep:插入值之间的字符串,默认为空格。
结束:最后一个值后面的字符串,默认是一个换行符。
刷新:是否刷新缓冲区
简单解释下参数:
默认参数:file=sys.stdout,print 函数是对sys.stdout的高级封装,对此不了解,请移步:https://blog.csdn.net/he_and/article/details/80675070?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
这里有一个大佬对print与sys.stdout关联,和其作用方式,看上几遍,你会发现新天地
sep:ex:print(1,2,3,sep="-") #1-2-3 ,换个角度理解,就是把逗号代表空格这一默认值,转换为代表自定义的字符串
end:默认换行符结尾,可自定义print(1,2,3,end="-") ;print(1,2,3,end="-")#1 2 3-1 2 3(用烂了,一般改为end="",连续输出)
没在print从用过flush语句,因此进行探究
话不多说来段定义:
print语句执行的操作其实也是一个写操作,不过他把我们从外设输入的数据写到了stdout流,并进行了一些特定的格式化。 当然,和文件方法不同,在执行打印操作是,不需要将对象转换为字符串(print已经帮我们做好了)。
对于flush,我看了众多博文,总结起来是:
flush方法:
功能:把缓冲区的数据强行输出,清空缓冲区。
作用:
在该问题下:在读写流中数据先被读到内存(相当于缓存区),再写入,中途用close()方法关闭读写流,缓存数据会丢失
用flush()方法:刷新缓存区,强制把其中数据写入文件,清空缓冲区,避免数据丢失
在print里flush默认是False,写成True后每次调用执行该语句时,都会把语句的内容放到文件中(如果有用file方法的话)
(这是一个较直观的展现)
简化理解:就是,假期时老师一布置作业,学霸就开始写,没写完就不玩,而学渣本渣要等到开学前一天通宵学习,到上学做不 完了,可能还要作业没搞定就交差了。用flush就是学霸本霸了(巨不专业,理解意思就行,没谁厉害,只有适合与否)
各位大佬们,如果觉得这篇文章对你有那么一点点帮助,点个赞呗,谢谢