您现在的位置是:群英 > 开发技术 > Python语言
python的format函数如何调用?浅谈format的用法
Admin发表于 2021-11-24 17:54:001781 次浏览

    这篇文章给大家分享的是关于python的format函数的内容,下文介绍了format函数的调用、format函数及其占位符的调用格式、占位符以及参数设定等等,文中介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。

    format函数的调用

    format函数可以被直接调用或在print函数中以占位符实现格式化调用。
    在**2.6**版本前,占位符仍和其他语言一样使用%(比如C中)。但在其后的版本,format函数的占位符更改为{}(花括号)。

    优化的目的目前总结出了4个:

    1.花括号封闭可以实现更多格式化的实现,更强大的功能

    2.使代码具有更强的可读性。

    3.单个参数可以多次输出,参数顺序可以不相同

    4.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型

    好了,进入正文,对于format函数的使用将分为两部分。

    1.format函数及其占位符的调用格式

    2.占位符格式和参数设定

    ps:在介绍的时候各个内容会有小小的穿插,其实是为了更加便于理解~

    format函数及其占位符的调用格式

    format函数可以直接被调用,比如在shell中直接调用

    例1

    >>>'{} {}'.format('hello','world')       #占位符不指定顺序
    'hello world'
    >>>'{0} {1}'.format('hello','world')       #占位符制定顺序
    'hello world'
    >>>'{1} {0}'.format('hello','world')       #换一下顺序试试
    'world hello'
     

    我们更常用的方式是放入print()函数中进行格式化输出

    例2

    print('{}获得了S8冠军'.format('IG')
    #结果:
    #IG获得了S8冠军

    占位符以及参数设定

    在第一部分中,简单地介绍了两种调用format函数的方式。可以很清晰地发现,在占位符中也可以输入一些参数,对格式化输出的参数进行设定,下面就详细的介绍占位符中各项参数的顺序和设置。

    占位符中的各项参数格式如下所示

    例3(伪代码)

    '{position/key:fill,align,sign,width,precision,type}'.format(...)

    position/key

    position/key指定了占位符处从format函数的参数中调用哪个值,position很好理解,比如上面例1中介绍的后两种调用,就指定了format中两个参数hello和world在占位符中调用的顺序,注意这个顺序是按照数组排序中从‘0'开始计算的。 当然,你也可以使用键值对进行操作。比如下面的例4:

    例4

    print(
        'the championship of the S8 is {S8}, and for S9, it\'s {S9}.'.format(S8='IG',S9='FPX'))
    #结果:the championship of the S8 is IG, and for S9, it'FPX.

    有写小伙伴可能要问了,键值对(字典)的使用在这里有什么好处吗?感觉还不如填个数字来的快捷啊?

    再来看下面这一段代码:

    例5:

    dic={'S8':'IG','S9':'FPX'}
    print(
        'the championship of the S8 is {S8}, and for S9, it\'s {S9}.'.format(**dic))
    #结果:the championship of the S8 is IG, and for S9, it'FPX.

    在例5中,有些需要特别说明的地方,首先如果你要在format的括号里调用字典,记得在字典名前面加**,也就是字典的函数调用方法哦!从例5中应该能发现了,我们不需要在format中专门把字典列出来,而是可以调用以前定义过的字典,这就使得其具备了重复调用的优点。想象一下这一点会有什么不同,这是%方法做不到的哦。

    你也可以用数组的形式填充,如例6所示:

    例6:

    names=['hilary','vergil','nero']
    places=['chengdu','shijiazhuang','tokyo']
    print(
        'Hi, {names[0]}. I am {names[1]} and this is {names[2]}.'.format(names=names)
        #Hi, hilary. I am vergil and this is nero.

    第一个位置的参数,也是冒号前唯一的参数相信大家就搞明白啦。

    下面的参数都是并列的,我们一个一个说明。首先要讲清楚这些参数如何并列或分隔。

    那就是无需分隔,没错,下面的这些参数,你需要定义哪些就按照顺序写下就行,不用加什么逗号或者空格分开,你可能会想,这不容易产生歧义吗?我学习的时候也想过这个问题,事实是开发者编辑函数逻辑时就吧这些参数的设定值用不会产生任何歧义的符号或数字组合起来了,这一点当你使用时也会发现。

    fill参数

    fill参数用于指定填充符,默认值为空格,实际经验是,很少有场景会用到这个参数,除非是按照国际通用的三位一个逗号分隔数字等场景。

    例7:

    >>> print('{:,}'.format(12345678))
    12,345,678

    align参数

    align参数用于格式化文本的对齐方式,当你填充了宽度的时候,这个参数的作用是很大的,当然,在一句话中无缝的插入一个格式化文本的话,这个参数的设置就不大有意义了。

    > < ^
    右对齐 左对齐 居中对齐

    例8:

    在shell中运行如下代码(代码中数字三十表示宽度,目的是为了拉大总体宽度显示出对齐的效果,后文会提到宽度的使用方法)

    >>> print('{:<30}'.format('pos'))
    pos
    >>> print('{:>30}'.format('pos'))
                               pos
    >>> print('{:^30}'.format('pos'))
                 pos

    sign参数

    sign参数用于指定是否保留正负号,这个针对format中数字起作用。

    + - SPACE
    保留正负号 仅保留负号 正数留空,负数保留负号

    例9:

    >>> print('{0:+} {0:-} {0: }'.format(123))
    +123 123  123
    >>> print('{0:+} {0:-} {0: }'.format(-123))
    -123 -123 -123

    ps:注意第一行代码运行结果中最后一个保留了一个空格哦

    width参数

    width参数控制输出的长度,经过我的测试,该长度为最小长度,即当设定的width参数小于format中调用的值时,不生效;而当设定值大时,会用空格(默认)或零进行填补,如果想要用0进行填补,那么需要在width前添加0,width参数的使用如例10所示。在例8中展示对齐参数时也使用了宽度参数,可以看出对齐是对我们的填补方式存在影响,其具体影响也在例10中给出。

    例10:

    print('{0:12} {0:05} {0:2}'.format(123)) #依次为12位宽空格填补、5位宽0填补、2位宽
    #结果:
    #         123 00123 123
    print('{0:<012},{0:>012},{0:^012} '.format(123))
    #结果:
    #123000000000,000000000123,000012300000 
    print('{0:^012},{1:^012},{0:^011},{1:^011} '.format(123,1234))
    #结果:
    #000012300000,000012340000,00001230000,00012340000

    可以看出空格的填补同样以对齐的区别显示出来,但是0的填补却往往改变了我们数字的表示,使用时要注意。另一个要注意的是当你的总宽度和数据的有效宽度的奇偶性不同时,居中对齐的方式会有不同,这就是例10中第三行代码希望表达的意思。可以看出,当奇偶次出现不同时,总是偏向左一位对齐。

    precision参数

    和%方法中一样,如%.3f表示保留小数点三位小数,用【.保留有效数字位数(f)】表示数据的精确度,如果添加f,则表明保留的为小数点后位数,如果不加,则表示保留的是有效数字位数。例11很好的展示了这种区别。

    例11:

    print('{0:.2f},{0:.7f},{0:.2},{0:.2%} '.format(123.123456789))
    #结果:
    #123.12,123.1234568,1.2e+02,12312.35% 

    其实小伙伴们应该注意到了,这里的f,%其实都算是precision参数后的type参数控制的内容――数据类型。因此,我们对精度简单介绍,而将precision-type参数的联合参数具体介绍,因为二者具有很强的关联。

    precision-type参数

    首先介绍所有的type参数,如下表所示:

    type参数 含义
    默认 十进制整数 123
    f 浮点数 123.123
    % 百分比格式 12312.3%
    e 指数形式 1.2e01
    - d 十进制整数 123
    进制转换 十进制 123
    b 二进制 1101111
    o 八进制 157
    x 十六进制 6f
    #x 小写表示的十六进制 0x6f
    #X 大写表示的十六进制 0X6F
    c 字符,打印前转换为Unicode代码 ‘123'

    总结

        以上就是关于python的format函的相关介绍,本文对大家学习和理解format函数的使用,有需要的朋友可以参考学习,希望对大家学习Python有帮助,想要了解更多可以继续浏览群英网络其他相关的文章。

    文本转载自脚本之家

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

    相关信息推荐
    2022-08-31 17:22:16 
    摘要:本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了DOM获取集合元素对象的相关问题,可以使用for或for...of循环迭代集合中的元素对象,以操控其属性和方法,下面一起来看一下,希望对大家有帮助。
    2021-11-02 17:17:48 
    摘要:这篇文章给大家分享的是PHP中强制类型转换的内容。小编觉得挺实用的,因此分享给大家做个参考,文中示例代码介绍的非常详细,对大家学习和了解PHP强制类型转换的方式有一定的帮,感兴趣的朋友接下来一起跟随小编看看吧。
    2022-05-09 17:56:29 
    摘要:PHP程序阻塞和非阻塞的区别是:阻塞调用结果返回之前,当前线程会被挂起,调用者不会接着往下执行;而非阻塞调用结果返回之前,该调用不会阻塞当前线程,可以继续向下执行。
    云活动
    推荐内容
    热门关键词
    热门信息
    群英网络助力开启安全的云计算之旅
    立即注册,领取新人大礼包
    • 联系我们
    • 24小时售后:4006784567
    • 24小时TEL :0668-2555666
    • 售前咨询TEL:400-678-4567

    • 官方微信

      官方微信
    Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
    增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
    免费拨打  400-678-4567
    免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
    微信公众号
    返回顶部
    返回顶部 返回顶部