print(f“{s!r}“)解释

目录

    • [1️⃣ 第一行](#1️⃣ 第一行)
    • [2️⃣ 第二行:f-string](#2️⃣ 第二行:f-string)
    • [3️⃣ `!r` 的作用](#3️⃣ !r 的作用)
    • [4️⃣ `repr()` 和 `str()` 的区别](#4️⃣ repr()str() 的区别)
    • [5️⃣ 你的代码输出](#5️⃣ 你的代码输出)
    • [6️⃣ f-string 中的三个常见转换](#6️⃣ f-string 中的三个常见转换)
    • [7️⃣ 常见使用场景(调试)](#7️⃣ 常见使用场景(调试))

这段 Python 代码主要演示 f-string 中的 !r 转换标志 的作用。我们逐步解释:

python 复制代码
s = "hello world!\n"
print(f"{s!r}")

1️⃣ 第一行

python 复制代码
s = "hello world!\n"

字符串 s 的内容是:

复制代码
hello world!

但结尾有一个 换行符 \n

实际字符串内容是:

复制代码
hello world!\n

其中 \n 表示换行。


2️⃣ 第二行:f-string

python 复制代码
print(f"{s!r}")

这里使用了 f-string(格式化字符串)

基本格式:

python 复制代码
f"{expression}"

可以在 {} 中放变量或表达式。


3️⃣ !r 的作用

!r 表示:

复制代码
对表达式调用 repr()

也就是:

python 复制代码
repr(s)

所以:

python 复制代码
f"{s!r}"

等价于:

python 复制代码
repr(s)

4️⃣ repr()str() 的区别

Python 有两种字符串表示方式:

函数 用途
str() 给用户看的
repr() 给开发者看的(更精确)

例子:

python 复制代码
s = "hello world!\n"

print(s)

输出:

复制代码
hello world!

因为 \n 变成了真实换行。


如果:

python 复制代码
print(repr(s))

输出:

复制代码
'hello world!\n'

注意:

  • 引号
  • \n 被显示出来

5️⃣ 你的代码输出

python 复制代码
s = "hello world!\n"
print(f"{s!r}")

输出:

复制代码
'hello world!\n'

原因:

复制代码
f"{s!r}" → repr(s)

6️⃣ f-string 中的三个常见转换

Python f-string 有三个常用转换:

写法 等价
{x} str(x)
{x!s} str(x)
{x!r} repr(x)
{x!a} ascii(x)

例子:

python 复制代码
s = "hello\n"

print(f"{s}")   # hello (换行)
print(f"{s!s}") # hello (换行)
print(f"{s!r}") # 'hello\n'

7️⃣ 常见使用场景(调试)

!r 非常适合调试

python 复制代码
name = "Tom\n"

print(f"name = {name!r}")

输出:

复制代码
name = 'Tom\n'

可以看到隐藏字符。


一句话总结

python 复制代码
{s!r}

等价于

python 复制代码
repr(s)

作用是 打印变量的"原始表示",包括引号和转义字符

相关推荐
LDR0064 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术4 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园4 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob4 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享4 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.4 天前
C语言--day30
c语言·开发语言
何以解忧,唯有..4 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽4 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下4 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
飞天狗1114 天前
零基础JavaWeb入门——第五课第二小节:九大内置对象 · 第2个:response(响应对象)
java·开发语言