【一日一技】揭秘字符串的两副“面孔”

爱谁谁
发布: 2025-08-31 09:13:06
原创
730人浏览过

如果你经常在python的命令行交互环境中工作,你可能会注意到以下现象:

a = 'test'

a

'test'

print(a)

test

首先,我们定义了一个变量a,值为字符串'test'。

当你直接在命令行输入变量名a并回车时,显示的结果是'test',而使用print(a)时,显示的结果则是test。

直接输入变量名并回车,字符串会被单引号包围。而使用print函数打印变量时,字符串则不带引号。

【一日一技】揭秘字符串的两副“面孔”虽然引号看起来只是一个小问题,但让我们看看反斜杠的情况:

b = 'D:gamepal4'

b

'D:\game\pal4'

print(b)

D:gamepal4

这里,变量b的值是一个Windows路径。在定义时,我使用的是单个反斜杠。

当我直接输入变量名b并回车时,结果是'D:\game\pal4',不仅有最外层的引号,而且反斜杠变成了双反斜杠。

但当我使用print函数打印时,一切又恢复正常。

【一日一技】揭秘字符串的两副“面孔”这看起来很奇怪,对吗?

实际上,直接输入变量名并回车时,你看到的是字符串在Python中的真实样子,因为在Python中不存在单个反斜杠。要表示反斜杠本身,必须使用\这种形式。

当然,在定义时你可以只写单个反斜杠,Python通常会理解你的意图,并自动将单个反斜杠转换为双反斜杠。

而使用print函数打印出来的,是Python优化后更易于人类阅读的形式。

当然,通过修改print函数,你也可以看到字符串的真实样子:

b = 'D:gamepal4'

b

'D:\game\pal4'

print(repr(b))

'D:\game\pal4'

当你使用repr函数处理字符串后再打印时,效果与直接输入变量名并回车相同。

在Python中,repr(对象)本质上是调用了对象的repr方法。而直接print(对象)时,打印的是对象的str方法返回的内容。

【一日一技】揭秘字符串的两副“面孔”让我们做一个实验:

class Test:
    def __repr__(self):
        return 'hello world!'

    def __str__(self):
        return '为什么我总是对你说你好,因为你是我的世界啊,傻瓜'

you = Test()
登录后复制

动手测试一下,输入you然后直接回车显示的是什么内容。输入print(you)显示的又是什么内容。

青柚面试
青柚面试

简单好用的日语面试辅助工具

青柚面试 57
查看详情 青柚面试

【一日一技】揭秘字符串的两副“面孔”【一日一技】揭秘字符串的两副“面孔” 运行效果图

从上面的例子可以看出,直接输入变量名回车和直接使用print函数打印调用的是对象的不同方法。所以它们当然可以不同。

【一日一技】揭秘字符串的两副“面孔”回到昨天的问题,在PyCharm的调试模式中,你看到的内容实际上是变量对象的repr方法返回的内容,这里显示的是字符串在Python中的真实样子,因此斜杠会变多。

前面提到,当你输入Windows路径时,Python通常能理解你的意图,将单个反斜杠转换为双反斜杠。不过也有例外情况。

例如:

假设有一个名为u6211的文件夹,它位于pal4文件夹中。

那么,路径应该是:D:gamepal4u6211

如果在Python中执行,会出现什么问题?

c = 'D:gamepal4u6211'

c

'D:\game\pal4我'

print(c)

D:gamepal4我

为什么u6211和前面的pal4拼在一起了?

因为u6211是一个Unicode编码,表示中文字符“我”。

在这种情况下,你有两种解决方法

【一日一技】揭秘字符串的两副“面孔”1. 手动使用双反斜杠:

b = 'D:gamepal4\u6211'

b

'D:\game\pal4\u6211'

print(b)

D:gamepal4u6211

【一日一技】揭秘字符串的两副“面孔”2. 在定义变量时,在字符串左侧引号前加上字母r:

b = r'D:gamepal4u6211'

b

'D:\game\pal4\u6211'

print(b)

D:gamepal4u6211

以上就是【一日一技】揭秘字符串的两副“面孔”的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号