str 与 repr

一、自测题

选择题:执行下列代码,问号处选择(      )将出现异常。

a = "hello world"
b = eval(?)
print(b)

选项为:
A、repr(a)
B、repr(‘a’)
C、str(a)
D、str(‘a’)

答案在文末。

二、str 等于 “输出什么”

str(a) 是一个字符串,表示一项数据 a 被打印出来后的样子。

>>> str(a)
'123'
>>> str('hello')
'hello'
>>> str([1,2,3])
[1,2,3]
>>> str(np.array([1,2,3]))
[1 2 3]

三、repr 等于 “输入什么”

repr(a) 也 是一个字符串,表示 eval(b) 能够得到 a 的话,b 应该怎么写。

>>> repr(a)
'123'
>>> eval('123') == 123
True
>>> repr('hello')
"'hello'"
>>> eval("'hello'") == 'hello'
True
>>> repr([1,2,3])
'[1, 2, 3]'
>>> eval('[1, 2, 3]') == [1, 2, 3]
True
>>> repr(np.array([1,2,3]))
'array([1, 2, 3])'
>>> eval('np.array([1, 2, 3])') == np.array([1, 2, 3])
array([ True,  True,  True])

上面的代码中,‘array([1, 2, 3])’ 需要改为 ‘np.array([1, 2, 3])’。

四、答案

eval(repr(‘a’)) ⇒ ‘a’
eval(repr(a)) ⇒ eval(repr(‘hello world’)) ⇒ ‘hello world’
eval(str(‘a’)) ⇒ eval(‘a’) ⇒ a ⇒ ‘hello world’
回忆下,eval(‘1+2’) 的意思是去掉单引号,对 1+2 求值,得到 3。eval(‘a’) 就是对 a 变量求值。
eval(str(a)) ⇒ eval(a) ⇒ eval(‘hello world’) ⇒ hello world,因为 hello world 不是正确的表达式,所以有异常,因此选择 C。

【上一个坑:什么是生成器?】
【下一个坑:numpy 的 unique 能替代 set 吗?】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值