一、变量交换还在用第三个变量?老铁你out啦!
还在这样写变量交换吗?
# 老掉牙的写法 temp = a a = b b = temp
学会这招,一行代码搞定:
# 运行一下试试:
a, b = 3, 5
print(f"交换前:a={a}, b={b}")
a, b = b, a # 这行就够了!
print(f"交换后:a={a}, b={b}")
二、批量处理文件还在用for循环?列表推导式一把梭!
有一堆文本文件要改名,你可能会这么写:
# 老式写法
new_names = []
for name in files:
if name.endswith('.txt'):
new_names.append(name.replace('.txt', '.md'))
试试这个一行代码的魔法:
# 来测试一下:
files = ['笔记1.txt', '笔记2.txt', '照片.jpg']
new_names = [name.replace('.txt', '.md') for name in files if name.endswith('.txt')]
print(f"处理后的文件名:{new_names}")
三、字典取值总怕报错?dict.get()来帮你!
看到这种代码就头大:
# 容易出错的写法
try:
value = user_data['age']
except keyerror:
value = 0
一行代码搞定,还能自定义默认值:
# 实战体验:
user_data = {'name': '小明'}
age = user_data.get('age', 18) # 找不到就返回18
print(f"用户年龄:{age}")
四、用枚举类型让代码更优雅
看到这种代码就想骂人:
# 各种魔法数字,看得头晕
if user_status == 0:
print("未注册")
elif user_status == 1:
print("已注册")
elif user_status == 2:
print("已认证")
来看看优雅的写法:
from enum import enum
class userstatus(enum):
unregistered = 0
registered = 1
verified = 2
# 实际使用起来很清晰
status = userstatus.registered
print(f"用户状态:{status.name}")
五、条件判断太多?字典映射来救场!
这种代码看着就烦:
if grade >= 90:
level = "a"
elif grade >= 80:
level = "b"
elif grade >= 70:
level = "c"
else:
level = "d"
用字典映射,既优雅又高效:
# 实战测试:
grade_map = {
lambda x: x >= 90: "a",
lambda x: 80 <= x < 90: "b",
lambda x: 70 <= x < 80: "c",
lambda x: x < 70: "d"
}
def get_level(score):
return next(v for k, v in grade_map.items() if k(score))
print(f"85分的等级:{get_level(85)}")
六、处理json数据还在手动解析?
别再这样写了:
# 又臭又长的老写法 name = data['user']['profile']['name']
学会这个神器:
from functools import reduce
from operator import getitem
def deep_get(dictionary, keys, default=none):
return reduce(lambda d, key: d.get(key, default) if isinstance(d, dict) else default,
keys.split('.'), dictionary)
# 实战一下:
data = {
'user': {
'profile': {
'name': '张三',
'age': 25
}
}
}
name = deep_get(data, 'user.profile.name')
print(f"用户名:{name}")
七、文件处理的正确姿势
不要再这样写了:
f = open('data.txt', 'r')
# 处理文件
f.close() # 经常忘记关闭
用上下文管理器,既安全又优雅:
# 实战演示:
with open('demo.txt', 'w') as f:
f.write('这才是正确的打开方式!')
print("文件已自动关闭,无需担心!")
八、函数参数还在傻傻写默认值?
这种写法太业余了:
def create_user(name, age=none, city=none, hobby=none):
if age is none:
age = 18
if city is none:
city = "北京"
# ...更多判断
用字典解包,代码立马高级起来:
def create_user(**kwargs):
defaults = {
'age': 18,
'city': '北京',
'hobby': '编程'
}
params = {**defaults, **kwargs}
return params
# 测试一下:
user1 = create_user(name='小明')
user2 = create_user(name='小红', age=20)
print(f"用户1:{user1}")
print(f"用户2:{user2}")
最后说两句:
这些技巧不是为了装逼,是为了写出更简洁、更健壮的代码。建议大家先pick一两个最感兴趣的,在实际项目中多尝试,慢慢就能体会到其中的妙处。
到此这篇关于8个让python代码效率翻倍的简单技巧的文章就介绍到这了,更多相关python代码优化技巧内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论