一、不推荐使用:%号
#正常按照位置传递参数print('%s asked %s to do something' % ('egon', 'lili')) #先后顺序不能乱#字典传递参数print('我的名字是 %(name)s, 我的年龄是 %(age)s.' % {'name': 'egon', 'age': 18})#字典参数也可以单独提出来kwargs={'name': 'egon', 'age': 18}print('我的名字是 %(name)s, 我的年龄是 %(age)s.' % kwargs)
二、推荐使用:format
基础使用方法
#正常传递参数,位置对应即可print('{} asked {} to do something'.format('egon', 'lili')) """ egon asked lili to do something"""#索引传递参数print('{0}{0}{1}{0}'.format('x','y'))#关键字传递参数print('我的名字是 {name}, 我的年龄是 {age}.'.format(age=18, name='egon'))#字典传递参数kwargs = {'name': 'egon', 'age': 18}print('我的名字是 {name}, 我的年龄是 {age}.'.format(**kwargs)) # 使用**进行解包操作类似的使用方法format_map
msg3="你好,{name},今天日期是{date}".format_map({"name":"xiaobai","date":"2021-4-28"})进化版使用方法:f"{}"
#传递变量名参数print(f'{name} {age}')
#传递表达式参数print(f'{3*3/2}') #数学表达式
#传递函数参数def foo(name): print('hello ' , name)print(f'{foo("tom")}')
#调用对象的方法print(f'{name.lower()}')
#在类中使用class Person: def __init__(self,name, age): self.name = name self.age = age def __str__(self): return f"{self.name}" def __repr__(self): return f"{self.name,self.age}"obj = Person("tom", 22)print(obj)# 触发__str__obj # 触发__repr__#字符串过长时,回车分隔即可,每行都有一个f#注意单双引号的嵌套name = 'baobao'age = 18gender = 'male'hobbie1='play'hobbie2='music'hobbie3='read'info = [ #第一个元素 f'名字:{name},' f'年龄:{age},' f'性别:{gender}', # 第二个元素 f'第一个爱好:{hobbie1},' f'第二个爱好:{hobbie2},' f'第三个爱好:{hobbie3}']三、模板字符串Template
from string import Templatename = "tom"t = Template("hello $name")res = t.substitute(name=name)print(res)"""使用模板字符串Template的最佳的时机是:处理由用的输入内容。模板字符串是最保险的选择,因为可以降低复杂性。其他一些复杂的字符串格式化技巧的可能会给你的程序带来安全漏洞."""四、格式化与填充
# *<10:左对齐,总共10个字符,不够的用*号填充print('{0:*<10}'.format('开始执行')) # 开始执行******# *>10:右对齐,总共10个字符,不够的用*号填充print('{0:*>10}'.format('开始执行')) # ******开始执行# *^10:居中显示,总共10个字符,不够的用*号填充print('{0:*^10}'.format('开始执行')) # ***开始执行***print('{salary:.3f}'.format(salary=1232132.12351)) #精确到小数点后3位,四舍五入,结果为:1232132.124print('{0:b}'.format(123)) # 转成二进制,结果为:1111011print('{0:o}'.format(9)) # 转成八进制,结果为:11print('{0:x}'.format(15)) # 转成十六进制,结果为:fprint('{0:,}'.format(99812939393931)) # 千分位格式化,结果为:99,812,939,393,931