我知道f弦,但是r弦是什么?还有其他吗?

JMo*_*itz 7 python string python-3.x

几周前,我在数据科学速成课程中第一次开始学习python,我们很早就被介绍给f字符串。

简单的代码:

name = 'Tim'
print(f'There are some who call me {name}...')
Run Code Online (Sandbox Code Playgroud)

输出字符串“有人叫我蒂姆...”

出于好奇,通过浏览各种软件包,我遇到了类似这样的页面,其中详细介绍了可以在matplotlib中调用的函数,以在生成的图像中渲染类似于$ \ LaTeX $的表达式。在示例代码中,它们使用类似于f字符串的方式,但用r代替f。

import matplotlib.pyplot as plt
plt.title(r'$\alpha > \beta$')
plt.show()
Run Code Online (Sandbox Code Playgroud)

生成的图(否则为空)具有使用文本的标题,该标题的格式类似于使用MathJax或$ \ LaTeX $并带有希腊字母alpha和希腊字母beta的格式。


我的问题如下:

R弦到底是什么,它与F弦相比如何?r字符串是否专门用于matplotlib的mathtext和usetex?

除了f字符串和r字符串之外,还有其他值得注意的相似的字符串变体或替代品让我熟悉或意识到吗?

Han*_*ave 11

  1. r字符串是原始字符串。
    • 它忽略转义字符。例如,"\n"是包含换行符的字符串,r"\n"是包含反斜杠和字母的字符串n
    • 如果您想将它与f字符串进行比较,则可以将f字符串视为“包含电池”。它在转义字符和执行任意表达式的能力方面具有很大的灵活性。另一方面,R弦被精简和简化。
    • 至于实际使用的东西,如果要将字符串传递到使用一堆怪异字符或自己转义的其他东西中,则通常将使用r字符串,这样您就不必太费劲了您需要多少反斜杠才能使所有功能正常工作。在您的示例中,他们至少需要r弦琴才能使\a钻头正常工作。
  2. 由于您使用的是f字符串,因此我假设您至少具有Python 3.6。并非所有这些选项都适用于较早的版本,但是以下任何前缀在Python 3.6+中均有效,并且可以使用大写和小写形式:r, u, f, rf, fr, b, rb, br
    • b字符串是二进制文字。在Python 2中,它们什么也不做,只有存在才能使源代码与Python 3兼容。在Python 3中,它们允许您创建bytes对象。字符串可以看作是底层字节的视图,通常在允许哪些组合方面受到限制。类型上的区别有助于防止错误将文本技术盲目地应用于原始数据。在Python 3中,请注意'A'==b'A'False。这些不是一回事。
    • u字符串是unicode文字。在Python 3中,字符串默认情况下是unicode,但是u为了与Python 2向后兼容,允许使用前缀。在Python 2中,字符串默认是ASCII,并且u前缀允许您在字符串中包含非ASCII字符。例如,请注意法语短语中的重音字符u"Fichier non trouvé"
    • 用我写的那种代码,我几乎不需要什么r, u, f, b。甚至b还有一点。其他人每天(大概)都会处理这些前缀。他们不一定是您需要熟悉的任何东西,但是了解它们的存在并能够找到其文档可能是一项很好的技能。

只是为了让它出现在答案中,而不是在注释中埋藏,@ JamesGibson链接了语言规范,这与我从中提取前缀列表的位置相同。根据您的数学背景,正式的语言规范可能会特别有趣-取决于您对代数和数学逻辑的喜爱程度。

即使只是像Forth这样的语义上微不足道的语言,我认为许多程序员还是喜欢编写简短的解释器,并对他们选择的语言如何工作获得宝贵的见解。