关于python 字符串前面加 f的代码 及前有b和u的问题

在代码中常常会发现如下类似代码的话:
def extract_youtube_id(url):
    if url.startswith(('youtu', 'www')):
        url = f'http://{url}'
在字符串前加了f符号,这是Python3.6之后新加的功能。 相当于format()函数。 上面代码等同于:
def extract_youtube_id(url):
    if url.startswith(('youtu', 'www')):
        url = 'http://{url}'.format(url=url)
从代码中看出简化了很多,而且很好理解处理。不错这方法,值得使用。 Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。 字符串可以编码成字节包,而字节包可以解码成字符串。
>>> '€20'.encode('utf-8')
b'\xe2\x82\xac20'
>>> b'\xe2\x82\xac20'.decode('utf-8')
'€20'
这个问题要这么来看:字符串是文本的抽象表示。字符串由字符组成,字符则是与任何特定二进制表示无关的抽象实体。在操作字符串时,我们生活在幸福的无知之中。我们可以对字符串进行分割和分片,可以拼接和搜索字符串。我们并不关心它们内部是怎么表示的,字符串里的每个字符要用几个字节保存。
凉葱落

凉葱落python开发工程师