python字符串前缀u,b,r,f

今天看别人写的代码得时候,发现他在好多字符串前面加了前缀,就查了一下这些前缀得含义,记录一下。

u

字符串默创建以Unicode编码存储,可以存储中文,这个在python2中比较常用,可以用来防止含中文字符串出现乱码得情况,不过在python3中,由于字符串默认就是Unicode编码,貌似用处就没有很大了。
举个例子

print(u"中文")

在这里插入图片描述

b

bbytes得缩写,表示该字符串是bytes类型,其实也就是我们平时说的Ascll码。
这就比较有意思了,上一个说到Python3里字符串默认是unicode,所以一般不用u,而Python2的字符串本身就是bytes类,所以对python2来说,b可用可不用。
当然,其实在我们平时写python程序的时候也不会管这些东西,这些玩意都只会用在一些对编码格式有要求得方法里面,比如sendrecv 之类得。

找含义的时候,看到大佬附的 Python3 中,bytesstr 的互相转换方式,也顺带放上来吧

str.encode('utf-8')
bytes.decode('utf-8')

举个例子
在这里插入图片描述

r

说到r,就不得不先说说python里的转义字符,对,就是下面这张表里的这堆东西

转义字符 说明
\n 换行符,将光标位置移到下一行开头。
\r 回车符,将光标位置移到本行开头。
\t 水平制表符,也即 Tab 键,一般相当于四个空格。
\a 蜂鸣器响铃。注意不是喇叭发声,现在的计算机很多都不带蜂鸣器了,所以响铃不一定有效。
\b 退格(Backspace),将光标位置移到前一列。
\\ 反斜线
\' 单引号
\" 双引号
\ 在字符串行尾的续行符,即一行未完,转到下一行继续写。
(写的时候没想到markdown把我写的转义字符给转义了)

这些转义字符都有一个共同点就是\开头,那万一我字符串里的\我就要是\而不是用来转义呢?这时候r就上场了,他的作用就是让字符串里的转义字符失效,也就是告诉计算机我这个字符串他就是一个纯字符串,没有其他杂七杂八的东西
举个例子对比

print('123\n456')
print(r'123\n456')

在这里插入图片描述
效果非常明显!

f

这个我看很多介绍里都没写,仔细一找才知道他是python3.6刚加的。
他的作用是格式化字符串,也就相当于一大堆的format,你加上后就会支持在字符串中加入一些python表达式,直接上例子吧,直接讲也讲不清楚

a=1
b=2
print(f'a+b={a+b}')

在这里插入图片描述
这样一看就懂了吧,用这玩意不比用format香嘛 [旺柴]

参考文献

[1]https://www.cnblogs.com/songzhenhua/p/13236794.html
[2]https://blog.csdn.net/weixin_42165585/article/details/80980739
[3]http://c.biancheng.net/view/2176.html

如有错误,欢迎指正

同时发布在CSDN中:https://blog.csdn.net/tangkcc/article/details/119868258

posted @ 2021-08-23 14:47  小汤同学  阅读(759)  评论(0编辑  收藏  举报