值得收藏!编写干净的 Python 代码的 5 个技巧

平时是否思考过如何编写干净的 Python 代码吗?

今天我将给大家分享五个技巧,确保你的代码正常工作、易于阅读并充分利用 Python 提供的功能模块。

使用易于记忆的变量名

通常在编程时,我们不会停下来考虑一个易于阅读、发音和记忆的描述性变量名称。这是一个不好的做法,因为我们将在不考虑描述性变量名称时节省的时间,我们将在未来花费它来尝试理解该变量应该做什么。

❌Bad way

fromdatetimeimportdateymdstr=date.now().isoformat()

✅Good way

fromdatetimeimportdatecurrentDate=date.now().isoformat()

哪个更好地描述了变量的功能? ymdstr 还是 currentDate?

在声明变量并为它选择一个好名字时,最好多花几秒钟,而不是在未来浪费两倍(或三倍)的时间试图理解它的功能是什么。

创建易于搜索的变量名称

每个程序员都应该知道的一件事是,在我们的编程生涯中,我们将花费更多的时间阅读代码并尝试理解它,而不是编写它。

❌Bad way

# What the h*ck is 420 for?result=serializer.serialize(data,420)

✅Good way

json=serializer.serialize(data,sort_keys=True,indent=4)

如果我们停下来阅读两个代码摘录(好的和坏的),我们会意识到在坏代码摘录之前快速理解好的代码摘录要容易得多。

使用具有高度描述性的名称

当你将函数作为参数送给另一个函数时,它导致的唯一原因是我们无法正确遵循代码并且我们很难理解它的作用。

❌Bad way

importreaddress='S Grand Ave, LA 90013'city_zip_code_regex=re.compile("^[^,]+,\s*(.+?)\s*(\d{5})$")matches=city_zip_code_regex.match(address)save_city_zip_code(matches.group(1),matches.group(2))

✅Good way

address='S Grand Ave, LA 90013'city_zip_code_regex=re.compile("^[^,]+,\s*(?P<city>.+?)\s*(?P<zipcode>\d{5})$")matches=city_zip_code_regex.match(address)save_city_zip_code(matches.group('city'),matches.group('zipcode'))

通过这个例子,我们可以看到如何通过命名子模式来减少正则表达式的依赖。这使得代码更容易阅读和理解。

不要过度使用 if-else

很多时候,我们并没有过多考虑未来,在某些时候我们可能不得不修改代码,所以我们尽量不要滥用 if-else。 if-else嵌套越多,代码就越难理解。

❌Bad way

defis_shop_open(day:str):ifday:day=day.lower()ifday=='friday':returnTrueelifday=='saturday':returnTrueelifday=='sunday':returnTrueelse:returnFalseelse:returnFalse

✅Good way

defis_shop_open(day:str):foropen_dayin['friday','saturday','sunday']:ifday==open_day:returnTruereturnFalse

看看这个例子有多干净。行数更少,更容易理解。记住:显式优于隐式。

不要添加不必要的上下文

这个小的技巧是基于"不要重复自己"。如果你拥有的任何类或对象的名称已经描述了某些内容或提供了有关其功能的明确信息,那么在变量名称中重复自己是不好的。

❌Bad way

classCar:carMake=''carModle=''carColor=''#...}

✅Good way

classCar:make=''modle=''color=''#...

通过这种方式,我们不会重复汽车,因为它过于重复,并没有真正为我们增加价值。记住,越简单越好。

总结

如何编写更简洁、更高效的 Python 代码不仅考验一个人的编码内功,更能让阅读代码的人容易理解,提升工作效率。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值