python基础第一弹--浅谈repr和str;eval和print

本文详细解析了Python字符串格式化符号%s和%r的不同之处。%s用于普通字符串输出,而%r则会在对象上添加引号,适用于调试。文章通过实例展示了两者在eval函数中的表现差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习到python字符串格式化符的时候想必很多小伙伴都会接触到%r和%s这两个格式化
那么它们分别有什么区别和联系呢?
%s是格式化字符串
%r是给对象加上引号’’

举个例子

print(type('%r'%5))
print(type('%s'%5))
#它们的输出都是<class 'str'>

所以如果作用的对象本身不是字符串的话,那么是没有区别的,但是

b='nihao'
print('%r'%b)
print('%s'%b)
'''
它们的输出结果如下
'nihao'
nihao
'''

看到这里我们就知道它们的区别在哪了吧

eval和print

我们再来看看%r和%s在eval上的不同

eval('%r'%b)
#输出'nihao'
eval('%s'%b)
#报错,nihao没有定义

报错是怎么回事呢?
其实eval的输出机制是给对象去掉双引号,所以自然去掉双引号的b就成了一个未定义的变量而报错了

对于print和eval的区别想必通过上面的例子大家也可以很清晰地知道了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值