C 语言风格
a = 0b1010010
b = 'value'
print("Binary: %d %s" % (a, b))
# 对应 C 语言的如下
printf("Binary: %d %s", a, b)
- 其实就是类似 C 语言的
printf函数,左边是占位符,右边是数据 - ⚠️
- 占位符和右边数据的数据类型必须严格一一对应,每次我们新增都要手动检查,很容易写错
- 可读性比较差,特别是右边的数据写法比较复杂的时候
- 如果有相同的数据要输出,你也不得不重复占位重复写
- 改进
-
%(key)- Python 中的
%格式输出还支持将dict作为数据传入,使用方法是在常规的%符号后面加(key),此时就会传入dict[key],此时右边的数据传入顺序可以是随意的了,添加也会比较方便 - 而且要是有相同的数据要传入的话,我们只要在
dict中放一份,比如print("Binary: %(name1)d %(name1)d" % {'name1': a}) - ⬇️但是可读性更差了,复杂的输出会更复杂,而简单的输出用
dict又多此一举
- Python 中的
-
- ????总结来说,不用这个
str.format
-
用
{}来取代之前的%格式来作为占位符 -
类似输出
%要用%%一样,想输出{}要用{{}} -
{}内可以放什么❓
- 索引
- 就会去后面的数据找对应索引的值
-
print('{1} {0}'.format(a, b)),输出b a
- ...
- ⬇️但是要输出的格式越复杂,
{}里面放的东西也越复杂,可读性差
- 索引
-
????只比 C 语言风格好一点点,还是不要用这个
f-strings
- 在 Python 3.6 中加入的新特性,写法为
f"",注意有个前缀f - 优点⬆️
- 可以在里面引用所有当前 scope 里的变量,方法是
{variable_name} -
{}里面可以放表达式,比如print(f"{int(3.1415) \* 3}") - 在2⃣️中可以放在
{}的东西也都可以放在这里面
- 可以在里面引用所有当前 scope 里的变量,方法是
- ????用它!