四时宝库

程序员的知识宝库

这些代码老python程序员都不一定知道

引言

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

结尾

还有很多语法因为篇幅问题就不一一展开了,在这里说明的是不一定这些语法就是你的最爱,根据你自身习惯来说,哪些语法用惯了就用哪些语法,并不存在对错。

点赞是支持我继续创作的最大动力,感谢你的鼓励!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接