Python中有两种快速传参的办法,%s
和format
,可以在不打断原文结构的情况下传入参数.
以VBA为例,有些代码里面是会打断原文来传参数连接文本的,参数很多就很难看,例如我要实现下面的效果
今天的日期是xxxx,销售业绩为xxx
我们先设定参数
date = "2020-12-11"
flow = 1000
在VBA里面要这么写,就看起来很乱
'VBA
text = "今天的日期是" & date & ",销售业绩为" & flow
debug.print text
"今天的日期是2020-12-11,销售业绩为1000"
Python里面可以这么写,简直不要好看太多😻
# Python
>>> text = "今天的日期是%s,销售业绩为%s" % (date,flow)
>>> text
"今天的日期是2020-12-11,销售业绩为1000"
%s
%s
代表的是传入文本
一个参数这么写
>>> text = "今天的日期是%s" % date
>>> text
"今天的日期是2020-12-11"
多个参数这么写
# Python
>>> text = "今天的日期是%s,销售业绩为%s" % (date,flow)
>>> text
"今天的日期是2020-12-11,销售业绩为1000"
当然也可以换成%d
传入整数,%f
传入浮点数.不过没必要,%s
绝大多数场景是够用的
更高级的用法,占位,数据类型等,参考这位大佬👉Python3 格式化输出 %s & %d 等
format
format
在空括号的时候和%s
是一样的用法,这种实质上没有区别,都是按位置传入参数
>>> text = "今天的日期是{}".format(date) # 单参数
>>> text
"今天的日期是2020-12-11"
>>> text = "今天的日期是%s,销售业绩为%s".format(date,flow) # 多参数
>>> text
"今天的日期是2020-12-11,销售业绩为1000"
但是format
还可以加入参数名字,实现不固定位置传入参数,还可以在多个位置传入同样的参数
>>> text='''
今天的日期是{date},销售业绩为{flow}
今日的日期是{date},流水完成度{proc}
'''.format(date=date,flow=flow,proc="97%")
>>> text
今天的日期是2020-12-11,销售业绩为1000
今日的日期是2020-12-11,流水完成度97%
但是在实际引用中,完成度通常不是写好的百分数,而是浮点数居多.例如上面的97%,在实际取数多为0.97,所以我们可以设置一下格式
>>> text='''
今天的日期是{date},销售业绩为{flow:0d}
今日的日期是{date},流水完成度{proc:.2%}
'''.format(date=date,flow=flow,proc=0.97)
>>> text
今天的日期是2020-12-11,销售业绩为1000
今日的日期是2020-12-11,流水完成度97.00%
更详细的参数可以参照这张表👉菜鸟教程
大致模式如下,使用时候中间没有空格
{变量名:.保留小数位 数据格式}
整数d
,浮点数f
,百分比%
,千分位,
小结
大概可以在下面的场景使用不同的方式
场景 | 使用 |
---|---|
啥也不想,快速传入数据 | %s |
快速传数据又想装逼 | format |
多个位置使用同样的数据 | format |
传入数据并设置格式 | format |
不知道用啥传数据 | %s |