《代码的“言外之意”:从词源学透彻理解编程》字符的“双重生活”:从Escape到Raw

转义的英文词语

"转义" 的英文是 Escape,这是一个在编程和计算机科学中非常常见的术语。

  • 词源 :Escape 这个词来自拉丁语 ex(向外)和 cappa(斗篷)。原意是"从斗篷里逃出来"或"逃离"。在计算机语境中,它的含义演变为"逃离"或"改变"一个字符的通常含义。
  • 在编程中的含义 :当一个字符(例如 n 或 t)前面加上反斜杠 \ 时,这个 \ 就像一个"魔法斗篷",让后面的字符"逃离"了它原本的意义,转而拥有了新的、特殊的含义。比如,\n 不再是反斜杠和字母 n 的组合,而是被"转义"成了"换行"这个特殊功能。同理,\t 被转义为"制表符"。

为什么 r 不会发生转义?

你提到的 r,其实是 raw string 的缩写,意为"原始字符串"。

  • Raw:这个词的意思是"原始的"、"未加工的"。
  • 形象化理解 :你可以把普通字符串("...")想象成一个需要"翻译"的句子。当你输入 \n 时,这个"翻译器"会立刻识别并把它翻译成一个"换行"的动作。但当你使用 r"..." 时,你告诉程序:"嘿,别翻译!我给你的是原始文本,里面所有的字符,包括 \,都只是字面上的那个字符,不要赋予它们任何特殊含义!"

所以,当你写下 r"this is a line with \n" 时,Python 解释器会完全按照你看到的字面意思来处理:一个反斜杠 \ 和一个字母 n,而不是一个换行符。这在处理文件路径(例如 Windows 系统中的 C:\Users\username)时特别有用,因为文件路径本身就包含反斜杠,而我们不希望它们被错误地转义。


总的来说,转义符 \ 改变了字符的含义,而前缀 r 则告诉程序"取消"这种改变,让字符串恢复到"原始"状态。这种设计为程序员提供了极大的灵活性,可以清晰地控制字符串中的特殊字符行为。

相关推荐
言乐615 小时前
HTML视频审核模型
python·django·virtualenv·pygame·tornado
言乐616 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
by2099917 小时前
学会使用std::string类,并理解其内部是如何管理字符串的详细阐述(上)
c++·笔记·字符串·类和对象·string
yl453017 小时前
硫酸泄露处理生产商怎么选才够专业
大数据·人工智能·python
笨笨饿17 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
笑鸿的学习笔记18 小时前
C++笔记之大块顺序写
java·c++·笔记
for_ever_love__18 小时前
机器学习入门——手写线性回归与梯度下降
人工智能·python·学习·机器学习·线性回归
打工仔折腾 AI18 小时前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
I Am a robert girl18 小时前
当传感器学会“说谎“:拆解可靠性门控的稀疏惯性动捕融合
python·姿态估计·传感器融合·惯性动捕·imu传感器·可靠性门控·可穿戴计算
李航198319 小时前
AI定制柜建模,需要详细的建模规范和标准流程
人工智能·python·计算机视觉·ai·ai编程