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

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

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


def get_user(user):

# 常规代码

if user:

return user

return "匿名用户"


if __name__=="__main__":

print(get_user(None))

# 短路来简写代码


def get_user(user):

return user or "匿名用户"

if __name__=="__main__":

print(get_user(None))

结果打印

  1. 匿名用户

  2. 匿名用户

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

2.切片替代循环

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


# 使用循环

def reverselist(lst):

new_lst = []

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

new_lst.append(lst[i])

return new_lst


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

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


# 使用切片

def reverselist(lst):

return lst[::-1]


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

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

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

3.枚举

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


# 使用普通的循环

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

index = 0

for x in lst:

print(index, x)

index += 1

打印


# 输出:

# 0 a

# 1 b

# 2 c

# 3 d

# 4 e

使用枚举来实现


# 使用枚举

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

for index, x in enumerate(lst):

print(index, x)

# 输出:

# 0 a

# 1 b

# 2 c

# 3 d

# 4 e

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

4.三元运算符

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


# 使用普通的if-else语句

num = -5

if num > 0:

sign = "positive"

else:

sign = "negative"

print(sign) # negative

# 使用三元运算符

num = -5

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

print(sign) # negative

5.字典处理条件判断

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


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

def foo(x):

if x == "a":

return 1

elif x == "b":

return 2

elif x == "c":

return 3

else:

return -1


print(foo("a")) # 1

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


# 使用字典

def foo(x):

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

return dic.get(x, -1)


print(foo("a")) # 1

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

6.map 函数

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


# 不使用map函数

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

new_lst = []

for x in lst:

new_lst.append(int(x))

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


# 使用map函数

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

new_lst = list(map(int, lst))

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

7.filter 函数

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

例如:查找奇偶数


# 不使用filter函数

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

new_lst = []

for x in lst:

if x % 2 == 0:

new_lst.append(x)

print(new_lst) # [2, 4]


# 使用filter函数

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

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

print(new_lst) # [2, 4]

8.装饰器

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


# 使用普通的函数调用

import time


def foo():

# do something

time.sleep(1)


start = time.time()

foo()

end = time.time()

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

如果用装饰器呢


# 使用装饰器

import time


def timer(func):

def wrapper(*args, **kwargs):

start = time.time()

result = func(*args, **kwargs)

end = time.time()

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

return result

return wrapper


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

def foo():

# do something

time.sleep(1)

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

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

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值