引言
python一直在迭代更新,一些老的程序员可能一直没有发现,新的语法已经解决了很多老写法问题。
这篇文章就是总结一下可能一些老程序员都没有一直在用的一些 “语法”。
1. 字符串格式化,精度选取
相信很多老的python程序员格式化都是以下方式:
x = 2.5452
print(f'{x}')
在早期版本,我们需要保留小数位数是这么写的:
x = 2.5452
print(f'{round(x, 1)}')
其实现在可以这么写:
x = 2.5452
print(f'{x:.1f}')
支持版本:大于等于 python 3.6
2. 取商取模
seconds = 150
minute = seconds // 60
second = seconds % 60
print(f'{minute} m {second} s')
取商取模的操作,大部分情况下可能会分开计算,但其实可以一步到位。
seconds = 150
minute, second = divmod(seconds, 60)
print(f'{minute} m {second} s')
支持版本:所有 python 3
3. 字符串打印变量名与值
为了更直观地查看变量名与值的关系,我们可能会这么写:
x = 2
print(f'x={x}')
其实有更简单的写法:
x = 2
print(f'{x=}')
支持版本:大于等于 python 3.8
4. 避免额外变量或操作
numbers = [1, 2, 3]
count = len(numbers)
sum_value = sum(numbers)
avg_value = sum_value / count
info = {
'count': count,
'sum': sum_value,
'avg': avg_value
}
可以看到为了拿到一个信息数据的字典,我们创建了很多变量,其实现在可以这么写:
numbers = [1, 2, 3]
info = {
'count': (count := len(numbers)),
'sum': (sum_value := sum(numbers)),
'avg': sum_value / count
}
海象运算符括号必须存在, 语法:( var := value )
支持版本:大于等于 python 3.8
5. 字典合并
dict_a = {'a': 1}
dict_b = {'b': 2}
dict_a.update(dict_b)
以前我们合并字典需要使用到 update() 方法,现在可以这么写:
dict_a = {'a': 1}
dict_b = {'b': 2}
dict_a |= dict_b
支持版本:大于等于 python 3.9
6. 类型注解
def add(items: list) -> int:
pass
你可能用过这样的类型注解给你的代码,但现在可以更加明确:
def add(items: list[int]) -> int:
pass
支持版本:大于等于 python 3.9
7. python中的switch
value = 1
if isinstance(value, int):
print('int')
elif isinstance(value, float):
print('float')
else:
print('other')
pyhon之前一直不支持 switch 判断,现在它有了 match:
value = 1
match value:
case int():
print('int')
case float():
print('float')
case _:
print('other')
支持版本:大于等于 python 3.10
结尾
还有很多语法因为篇幅问题就不一一展开了,在这里说明的是不一定这些语法就是你的最爱,根据你自身习惯来说,哪些语法用惯了就用哪些语法,并不存在对错。
点赞是支持我继续创作的最大动力,感谢你的鼓励!