我们时常会在字符串或者在函数传参时看见字符串前会突兀的出现r b u f等字符,令人困惑不已。因此在这里对这些字符进行归纳介绍。
r前缀
在字符串前加r的作用是去除所接字符串中转义字符的影响。
例如r'\n'
表示一个\字符和一个字母n,而不再是表示换行了。因为r的作用就是消除转义作用,将转义字符当作普通字符来看。
str = 'test_r\n'
str1 = r'test_r\n'
print (str)
print(str1)
输出结果:
b前缀
在字符串前加b,表示后面的字符串是是bytes类型。
一般用于网络编程中,因为服务器和浏览器只认bytes 类型数据。
在python3.x里默认的str是unicode类,py2.x的str是 bytes类;所以在python2中b前缀没有什么具体意义,只是为了兼容python3。
\quad
f前缀
在字符串前加f,是为了实现格式化字符串常量(formatted string literals)。
具体的作用就是,以大括号 {} 标明被替换的字段,大括号内支持python表达式;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。
这一用法是Python3.6新引入的一种字符串格式化方法,目的是使格式化字符串的操作更加简便。
#!/usr/bin/env python
# coding=utf-8
import time
if __name__ == '__main__':
t0 = time.time()
time.sleep(1)
name = 'processing'
print(f'{name} done in {time.time() - t0:.2f} s')
输出:
processing done in 1.00 s
\quad
u前缀
在字符串前加u,作用是将后面的字符串以Unicode格式进行编码,一般用在中文字符串前。
因为一般英文字符在使用各种编码下,都可以正常解析;但是中文必须表明所需编码,防止因为源码储存格式问题,导致再次使用时出现乱码。