从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快!

在Python 3.6之前,有两种将Python表达式嵌入到字符串文本中进行格式化的主要方法:%-formattingstr.format()

%

字符串对象具有使用%运算符的内置操作,您可以使用它来格式化字符串。

# 字符串类型
name = "tom"
print("猫的名字叫%s" % name) # 浮点数保留2位小数
PI = 3.141592653
print("%.2f" % PI)

上面的示例代码看起来足够易读,但是,一旦开始使用多个参数和更长的字符串,代码就将变得不太容易阅读。

name = "tom"
age = 2
action = "迅速"
disposition = "懒" print("猫的名字叫%s,今年%d岁了,抓老鼠非常%s,但是非常%s,白天总睡觉。"%(name, age, action, disposition))

str.format()

str.format()是对%-formatting的改进。它使用正常的函数调用语法,并且可以通过对要转换为字符串的对象的__format __()方法进行扩展。

使用str.format(),替换字段用大括号标记:

name = "tom"
print("猫的名字叫{}".format(name))

输出:

猫的名字叫tom

也可以通过引用其索引,以任何顺序引用变量:

name = "tom"
age = 2 print("猫的名字叫{1},今年{0}岁了,今天星期{0}".format(age, name))

输出:

猫的名字叫tom,今年2岁了,今天星期2

也可以使用 ** 来用字典,巧妙的完成格式化:

cat = {"name": "tom", "age": 2}

print("猫的名字叫{name},今年{age}岁了".format(**cat))

输出:

猫的名字叫tom,今年2岁了

使用 str.format() 格式化代码比使用 %-formatting 更易读,但当处理多个参数和更长的字符串时,str.format()看起来仍然非常冗长。

f-Strings:一种改进Python格式字符串的新方法

'f-strings’是Python的一种新的字符串格式化方法,要使用f-strings,只需在字符串前加上f,语法格式如下:

f ' <text> { <expression> <optional !s, !r, or !a> <optional : format specifier> } <text> ... '

基本用法

name = "tom"
age = 2 print(f"猫的名字叫{name},今年{age}岁了")

输出:

猫的名字叫tom,今年2岁了

实质上,把括号内的当作是变量即可。

支持表达式

name = "tom"
age = 2 print(F"猫的名字叫{name.upper()},今年{age}岁了")

输出:

猫的名字叫TOM,今年2岁了

数字操作

# 小数精度
PI = 3.141592653
f"Pi is {PI:.2f}" # 输出 Pi is 3.14 # 用0占位
nums = f"{123:06d}" # 输出 000123

注意事项

当需要输出{}时,有两种方式

1、在{}使用 引号

2、使用{{}}

cat_name = "tom"

# 使用单引号
print(f"{'{cat_name:' + cat_name + '}'}") # 输出结果:{cat_name:tom}
# 使用{{}}
print(f"{{cat_name:{cat_name}}}") # 输出结果:{cat_name:tom}

最新文章

  1. [Erlang 0104] 当Erlang遇到Solr
  2. 全选、取消、2级 checkbox的选中切换
  3. Linux学习之路&mdash;Linux目录配置
  4. 分享系列--面试JAVA架构师--链家网
  5. 想要提高网页转换率?试试这16 个UI 秘诀
  6. 用QQ号登陆Sharepoint,研究到最后关头卡住了。大家发力呀
  7. Stooge排序与Bogo排序算法
  8. IbatisNet开发使用小结
  9. BZOJ2083: [Poi2010]Intelligence test
  10. C# 编写简易 ASP.NET Web 服务器
  11. linux常用服务软件搭建及使用技巧
  12. 修改Servlet模板,让Servlet更清新
  13. 6 个 Linux 运维典型问题
  14. React 精要面试题讲解(二) 组件间通信详解
  15. 关于swagger——WebApi一个controller中出现多个Get是出现错误的处理
  16. java.util.Map
  17. linux 二级域名设置
  18. NodeJS遍历文件生产文件列表
  19. ActiveSupport::Concern 和 gem &#39;name_of_person&#39;(300✨) 的内部运行机制分析
  20. ckeditor_4.5.10_full,ckfinder_aspnet_2.6.2,插件使用

热门文章

  1. Mysql-高性能索引策略及不走索引的例子总结
  2. 使用递归方法,遍历输出以.java结尾的文件
  3. Nginx开启php_info
  4. 【论文笔记】Modeling User Exposure in Recommendation
  5. [BUUCTF]PWN——hitcontraining_magicheap
  6. java 编程基础:注解的功能和作用,自定义注解
  7. CentOS系统 python3+python2 &amp; Ipython安装
  8. 关于几种场景下的state
  9. c++设计模式概述之备忘录
  10. c++设计模式概述之代理