python里你有所不知的print语句和flush()方法(内含详细解析及新手易错点)

在编代码时,发现学了很多语句,对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)

这里附加新手易错点:

  1. print内为赋值语句:报错TypeError(这里要除了 sep=''   or  end=''  这两默认参数)
  2. print内为函数调用如 print(l.append(1)) 由于这类对数据内部进行改造,无返回值,return被默认为none
  3. 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就是学霸本霸了(巨不专业,理解意思就行,没谁厉害,只有适合与否)

 

 

各位大佬们,如果觉得这篇文章对你有那么一点点帮助,点个赞呗,谢谢

 

 

 

 

 

 

 

 

 

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值