Python小技巧:如何用更少的代码做更多的事情

经常在写代码的时候,会写很多代码,但是有时候只要是使用妥当,一行代码就可以代替,也就是很简单的一行代码就能实现。

1.短路运算,常见的就是if els组成的

  1. def get_user(user):

  2. # 常规代码

  3. if user:

  4. return user

  5. return "匿名用户"

  6. if __name__=="__main__":

  7. print(get_user(None))

  8. # 短路来简写代码

  9. def get_user(user):

  10. return user or "匿名用户"

  11. if __name__=="__main__":

  12. print(get_user(None))

结果打印

  1. 匿名用户

  2. 匿名用户

这样只需要一行代码久可以搞定了。

2.切片替代循环

使用切片代替循环或递归来操作序列。切片是一种用于从一个序列(如字符串、列表、元组等)中获取一部分或全部元素的语法。

  1. # 使用循环

  2. def reverselist(lst):

  3. new_lst = []

  4. for i in range(len(lst) - 1, -1, -1):

  5. new_lst.append(lst[i])

  6. return new_lst

  7. lst = [1, 2, 3, 4, 5]

  8. print(reverselist(lst)) # [5, 4, 3, 2, 1]

  9. # 使用切片

  10. def reverselist(lst):

  11. return lst[::-1]

  12. lst = [1, 2, 3, 4, 6]

  13. print(reverselist(lst)) # [6, 4, 3, 2, 1]

切片的操作比循环或递归更简单并且高效,因为切片是基于内置函数实现的,而循环或递归是基于自定义函数实现。

3.枚举

枚举是一种用于同时获取可迭代对象中的元素和索引的函数。枚举可以避免使用额外的变量来记录索引,提高了代码的可读性和效率。

  1. # 使用普通的循环

  2. lst = ["a", "b", "c", "d", "e"]

  3. index = 0

  4. for x in lst:

  5. print(index, x)

  6. index += 1

打印

  1. # 输出:

  2. # 0 a

  3. # 1 b

  4. # 2 c

  5. # 3 d

  6. # 4 e

'

运行

运行

使用枚举来实现

  1. # 使用枚举

  2. lst = ["a", "b", "c", "d", "e"]

  3. for index, x in enumerate(lst):

  4. print(index, x)

  5. # 输出:

  6. # 0 a

  7. # 1 b

  8. # 2 c

  9. # 3 d

  10. # 4 e

使用枚举更加清晰,更加简洁

4.三元运算符

三元运算符是一种用于根据一个条件表达式来选择两个不同的值的简洁的语法。

  1. # 使用普通的if-else语句

  2. num = -5

  3. if num > 0:

  4. sign = "positive"

  5. else:

  6. sign = "negative"

  7. print(sign) # negative

  8. # 使用三元运算符

  9. num = -5

  10. sign = "positive" if num > 0 else "negative"

  11. print(sign) # negative

'

运行

运行

5.字典处理条件判断

遇到if循环语句很长的时候,其实可以使用字典来替代

  1. # 使用多个if-elif-else语句

  2. def foo(x):

  3. if x == "a":

  4. return 1

  5. elif x == "b":

  6. return 2

  7. elif x == "c":

  8. return 3

  9. else:

  10. return -1

  11. print(foo("a")) # 1

  12. print(foo("d")) # -1

  13. # 使用字典

  14. def foo(x):

  15. dic = {"a": 1, "b": 2, "c": 3}

  16. return dic.get(x, -1)

  17. print(foo("a")) # 1

  18. print(foo("d")) # -1

6.map 函数

map函数代替循环来对可迭代对象中的每个元素应用一个函数。map函数是一种用于将一个函数作用于一个可迭代对象中的每个元素,并返回一个新的可迭代对象的函数。

  1. # 不使用map函数

  2. lst = ["1", "2", "3", "4", "5"]

  3. new_lst = []

  4. for x in lst:

  5. new_lst.append(int(x))

  6. print(new_lst) # [1, 2, 3, 4, 5]

  7. # 使用map函数

  8. lst = ["1", "2", "3", "4", "5"]

  9. new_lst = list(map(int, lst))

  10. print(new_lst) # [1, 2, 3, 4, 5]

7.filter 函数

filter函数代替循环来从可迭代对象中筛选出满足一个条件的元素。filter函数是一种用于将一个条件函数作用于一个可迭代对象中的每个元素,并返回一个只包含满足条件元素的新的可迭代对象的函数。

例如:查找奇偶数

  1. # 不使用filter函数

  2. lst = [1, 2, 3, 4, 5]

  3. new_lst = []

  4. for x in lst:

  5. if x % 2 == 0:

  6. new_lst.append(x)

  7. print(new_lst) # [2, 4]

  8. # 使用filter函数

  9. lst = [1, 2, 3, 4, 5]

  10. new_lst = list(filter(lambda x: x % 2 == 0, lst))

  11. print(new_lst) # [2, 4]

8.装饰器

装饰器是一种用于在不修改原函数定义和调用的情况下,给函数添加额外的功能或修改其行为的语法。

  1. # 使用普通的函数调用

  2. import time

  3. def foo():

  4. # do something

  5. time.sleep(1)

  6. start = time.time()

  7. foo()

  8. end = time.time()

  9. print(f"foo() fun run {end - start} seconds.")

如果用装饰器呢

  1. # 使用装饰器

  2. import time

  3. def timer(func):

  4. def wrapper(*args, **kwargs):

  5. start = time.time()

  6. result = func(*args, **kwargs)

  7. end = time.time()

  8. print(f"{func.__name__}() took {end - start} seconds to run.")

  9. return result

  10. return wrapper

  11. @timer # 相当于 foo = timer(foo)

  12. def foo():

  13. # do something

  14. time.sleep(1)

这个装饰器不仅这个函数能用,其他函数也可以用。比如flask 框架,装饰器用到很多。还可以实现,如日志、缓存、计时、权限检查等。使用起来还是很方便呢。比如在测试中,之前我还自己简单写了一个巡检系统,不用定时器,自己用装饰器实现一个定时器,很简单的一两行代码不用依赖,只要有python环境随时可以执行了。当然了,还可以有很多用途。

python以简洁之美著称,所以在实际的开发中,我们还是可以多用到这些高级的语法,可以很简洁的实现功能。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值