Format格式化输出,最容易忽略的坑!

2019-07-19  本文已影响0人  0fdd04f992cd

近期有同学在使用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   暗号:简书

上一篇下一篇

猜你喜欢

热点阅读