2.2 复合字段名
同时使用了数字和变量名两种形式的字段名就是复合字段名。
2.2.1 使用. 点号
传递位置参数
替换字段形式:{数字.属性名}
只有一个替换字段的时候可以省略数字
class Person(object): def __init__(self,name,age,gender): self.name = name self.age = age self.gender = gender p = Person('zhangsan',18,'female') print('姓名是{0.name},年龄是{0.age},性别是{0.gender}'.format(p)) print('姓名是{.name}'.format(p)) # 只有一个替换字段时,可以省略数字
2.2. 使用[]中括号
用列表传递位置参数
用元组传递位置参数
用字典传递位置参数
- 中括号用法:用列表传递位置参数
infos = ['阿星', 9527] food = ['霸王花', '爆米花'] print('我叫{0[0]},警号{0[1]},爱吃{1[0]}。'.format( infos, food)) """ 我叫阿星,警号9527,爱吃霸王花。 """
- 中括号用法:用元组传递位置参数
food = ('僵尸', '脑子') print('我叫{0[0]},年龄{1},爱吃{0[1]}。'.format( food, 66)) """ 我叫僵尸,年龄66,爱吃脑子。 """
- 中括号用法:用字典传递位置参数
dic = dict(name='阿星', pid=9527) print('我是{[name]}!'.format(dic)) # 多个替换字段,不能省略数字 print('我是{0[name]},警号{0[pid]}。'.format(dic)) """ 我是阿星! 我是阿星,警号9527。 """
3. 转换字段
转换字段 conversion field 的取值有三种,前面要加 !
:
s
:传递参数之前先对参数调用str()
r
:传递参数之前先对参数调用repr()
a
:传递参数之前先对参数调用ascii()
ascii()
函数类似 repr()
函数,返回一个可以表示对象的字符串。但是对于非 ASCII 字符,使用 \x
、\u
或者 \U
转义。
# 转换字段 print('I am {!s}!'.format('Bruce Lee 李小龙')) print('I am {!r}!'.format('Bruce Lee 李小龙')) print('I am {!a}!'.format('Bruce Lee 李小龙')) """ I am Bruce Lee 李小龙! I am 'Bruce Lee 李小龙'! I am 'Bruce Lee \u674e\u5c0f\u9f99'! """
4. 格式说明符
格式说明符使用过于复杂,且实际使用场景不多,暂不讨论。