专栏地址:最强 Python3 基础
公众号:Python 生产力
前言
format 格式化函数其实就是 取模操作符(%) 的进阶版,和 取模操作符(%) 的使用方式大同小异,区别在于你很多时候并不需要像 取模操作符(%)一样去记忆各种输出类型符号代表的意思,只需要给出特定的占位符以及相对应的参数就能格式化,是一个相当方便的格式化函数。当然,如果要像 取模操作符(%)一样去专门制定精度,也是可以做到的。
一、下标索引取值
相比较于 模操作符(%)对象的各种指定,format 函数则限制很少,也就是说可以将任意的数据类型放在任意的位置,不管是普通的数字或字符串类型,还是可迭代的各种集合类型,如列表、元组等,都可以放入。可以看下面的例子。format 函数就像存入一个元组,在指定的位置存入指定的数据,每一个数据都有指定的下标。
print('整数:{0},浮点数:{1},字符串:{2}'.format(123, 52.36, 'Python'))
print('列表:{0},元组:{1},字典:{2},集合:{3}'.format([1, 2, 3], (4, 5, 6), {
'name': 'Python', 'price': 123.36}, {
7, 8, 9}))
# 输出 >>>
整数:123,浮点数:52.36,字符串:Python
列表:[1, 2, 3],元组:(4, 5, 6),字典:{
'name': 'Python', 'price': 123.36},集合:{
8, 9, 7}
对于 format 函数括号中的参数,每一个填入的元素就已经指定好了具体的下标,在字符串中相当于用这些下标获取指定位置的数据,不仅可以单次获取,也可以不断的使用同一个下标获取同一个元素。
# 多次取下标为 0 的值
print('整数:{0},数字:{0},正整数:{0},浮点数:{1},字符串:{2}'.format(123, 52.36, 'Python'))
# 输出 >>>
整数:123,数字:123,正整数:123,浮点数:52.36,字符串:Python
# ==============================================================================================
# 字符串下标可以放在任何地方
print('浮点数:{1},字符串:{2},整数:{0},数字:{0},正整数:{0}'.format(123, 52.36, 'Python'))
# 输出 >>>
浮点数:52.36,字符串:Python,整数:123,数字:123,正整数:123
# ==============================================================================================
# 只取某些下标内容
print('字符串:{2}'.format(123, 52.36, 'Python'))
# 输出 >>>
字符串:Python
同时,超出下标范围的取值会直接报错。
print('字符串:{3}'.format(123, 52.36, 'Python'))
# 输出 >>>
IndexError: Replacement index 3 out of range for positional args tuple
如果是一个列表添加进参数,那使用方式和在元组里面取列表的方式差不多,都是先取元组中对应位置的列表,然后取列表中的元素。当然,也可以添加多个列表。
# 添加单个列表
print('{0[1]}, {0[2]}'.format([123, 52.36, 'Python']))
# 输出 >>>
52.36, Python
# =====================================================================
# 添加多个列表
print('{0[1]}, {0[2]}, {1[1]}'.format([123, 52.36, 'Python'], [456, 789]))
# 输出 >>>
52.36, Python
二、空大括号直接取值
在 Python 3.1 开始的版本,你甚至能不写数字下标,直接使用空的大括号代替,这种时候 Python 能够自动帮我们将值替换进相应的括号中。但是要注意,因为没有具体的下标,所以 Python 只能做一对一的对应,也就是说取值的中括号不能比参数还多,而且位置也只能根据提供参数的位置来决定。
# 不超出参数个数范围的格式化
print('整数:{},浮点数:{},字符串:{}'.format(123, 52.36, 'Python'))
# 输出 >>>
整数:123,浮点数:52.36,字符串:Python
# ============