近期有同学在使用format格式化字符串的时候遇到了一个问题,这个问题也是大家在使用format的过程中非常容易踩的坑。
问题代码如下:
代码:
错误:
format的基本使用
正式踩坑之前,我们先来回顾一下format方法的使用,了解过python的同学,大家都知道字符串的format是用来格式化字符串的。
那么何为格式化呢?
格式化简单来说就是将字符串按照设定的格式进行输出
使用format将个人信息按以上方式输出
format格式化:方式一
format格式化:方式二
format格式化:方式三
容易忽略的坑
代码思考一:此处格式化后func的值是什么?
答案:func = 'get_data(10)'
对于这个问答99.9%的通过都能回答出来正确的结果,那么接下来看下一段代码
代码思考二:此处格式化后func的值是什么?
答案:
'get_data(<function add at 0x001F0810>)'
对于这个段代码很多同学,想都不想就回答 func = 'get_data(add)',那么实际上不是却这个结果
format原理剖析
format在做格式化输出的时候,对传入的数据类型没有限制。
意味着你在format中传入的数据可以是任意类型。
但是format在进行格式化的时候,是获取的格式化对象的__repr__方法所返回的字符串内容,进行格式化,上面案例中我们在format中传入add是一个函数。
那么函数对象的__repr__返回的就是上述大家所看到的该函数描述信息。
注意点:不只是函数,基本的数据类型以外的对象,使用format格式化的时候,都是按这种方式来输出的。
大家在使用format做格式化的时候,一定要注意这个点!
代码思考三:可不可以通过eval()执行格式化之后的函数 get_data(xxx)
当执行上面代码的时候,那么就会遇到文章开头提到的那个错误。
问题解决
解决方案如下:
本文由柠檬班木森老师原创,转载需注明出处!
关注简书,获取最新技术文章,让软件测试学习变得更简单!
今日福利,免费领取3小时搞定fiddler抓包实战课程视频,可加小米老师微信:13327316731 暗号:简书
网友评论