五个提升Python编码能力的小技巧

1. 引言

在Python中有许多编码小技巧。有时,了解其中的一些技巧可以帮助我们减少编写的代码量,同时让我们的程序看起来更加优雅简洁。
在本文中,我将介绍我在日常工作中经常使用的5个编码小技巧!

2. 三元表达式

三元表达式,顾名思义,是指一个包含三个部分的表达式。第一部分是一个条件,如果条件为真,则执行第二部分;否则,将执行第三部分。Python语法看起来为part_2 if condition else part_3
不妨举个栗子,代码如下:

number = 1
parity = "even" if number % 2 == 0 else "odd"
print(parity)
# odd

上述代码中,我们根据数字为奇偶数来对其进行赋值。如果数字是偶数,我们将奇偶性赋值为偶数;否则为奇数。很简单,不是吗?然而,请注意一件事:在第三部分或后面的内容中,我们只需要提供分配给变量奇偶性的取值即可。
其实,语句part_2 if condition else part_3,实质上等价于以下代码:

if condition:
    part2 = value1
else:
    part2 = value2 

更加一般的是我们也可以在函数调用上使用上述三元运算,代码如下:

def add(a,b):
    return a+b

def multiply(a,b):
    return a * b

a, b = 3, 5
res = (multiply if a > b else add) (a,b)
print(res)
# 8

3. 使用with操作相关文件

Python中的文件操作经常需要先打开,完成操作后在进行关闭或者释放。此外,代码中还经常会有异常情况产生,此时我们希望使用代码来尝试释放相应的资源。首先可以想到的是采用try..finally代码块来处理上述情况,代码如下:

f = open('Hi.text', 'w')
try:
    f.write('Hello, there')
finally:
    f.close()

但是一种更加优雅的写法是采用with关键字,代码如下:

with open('Hi.text', 'w') as f:
    f.write("Hello, there")

with关键字是Python中上下文管理器的一个特效。上下文管理器可以让我们在需要的时候精准地分配和释放相应的资源,这意味着我们可以在使用某些资源时缩短代码段!同时,我们还可以通过覆盖__enter____exit__函数来定义自己的上下文管理器!例如,我们可以在这里定义自己的方式:

class My_file:
    def __init__(self, fname):
        self.fname = fname

    def __enter__(self):
        self.file = open(self.fname, 'w')
        return self.file

    def __exit__(self, exc_type, exc_val, exc_trace_back):
        if self.file:
            self.file.close()

相应的调用代码如下:

with My_file('hello.txt') as f:
    f.write('hello, world!')

4. 一行中的多个比较

如果我们有一个变量n,我们需要检查n是否在0到100之间,我们会怎么做?(n>0)and (n<100)
在Python中我们直接使用 0<n<100就可以啦,是不是超级简单!

5. for…else语句

我们最常用的是if...else语句,但是Python中也支持for..else语句,样例代码如下:

for i in range(0,3):
    print(i)
else:
    print(i)
# 0
# 1
# 2
# 2

上述代码中,当循环执行完后,else代码块将执行。for...else语句块可以被理解为当循环条件不满足时,我们来处理我们需要做的事,伪代码逻辑如下:

for i in range(n):
    if condition:
        you_find_your_stuff()
        break
else:
    you_did_not_find_your_stuff()

上述代码中,如果条件condition满足,此时break运行,这个时候else代码块将不会执行。如果条件condition不满足,此时else代码块将会执行。

6. List生成式

List生成式主要用于从旧数据上生成我们所需的数据列表。
一般语法如下:

data_list = [expression_to_generate_new_data for item in iterable if condition]

用于生成数字0-9的平方的代码如下:

square_numbers = [i*i for i in range(10)]
print(square_numbers)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

如果我们只想处理上述列表中的奇数呢?我们的代码可以改写如下:

square_numbers = [i*i for i in range(10) if i % 2 == 1]
print(square_numbers)
# [1, 9, 25, 49, 81]

我们在对其进行扩展,如果对列表中的奇数计算平方运算,对偶数进行立方运算,代码如下:

square_numbers = [i*i if i % 2 == 1 else i*i*i for i in range(10)]
print(square_numbers)
# [0, 1, 8, 9, 64, 25, 216, 49, 512, 81]

7. 总结

本文对日常工作中经常使用到的五个Python技巧进行了总结和归纳,使用这些技巧可以减少我们的代码量让代码看起来更加简洁优雅!

您学废了吗?

在这里插入图片描述
关注公众号《AI算法之道》,获取更多AI算法资讯。

在这里插入图片描述

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵卓不凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值