美文网首页
Format格式化输出,最容易忽略的坑!

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

作者: 0fdd04f992cd | 来源:发表于2019-07-19 14:29 被阅读0次

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

    相关文章

      网友评论

          本文标题:Format格式化输出,最容易忽略的坑!

          本文链接:https://www.haomeiwen.com/subject/nwajlctx.html