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

近期有同学在使用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)

 

 

当执行上面代码的时候,那么就会遇到文章开头提到的那个错误。

 

问题解决

 

解决方案如下:

 

本文由柠檬班木森老师原创,转载需注明出处!

今天的小分享就到这了,有问题可以**+qun:927360521 暗号:CSDN 讨论**,群内有各大城市软件测试招聘(北上广深比较多)消息,每周1至周5群都会有免费公开课,笔试面试题分享哒!