9个提高python水平的高级知识点!

今天分享一些有助于我们掌握 Python 的高级概念,一起来学习积累。

异常处理

异常处理是一个很重要的概念,它可以帮助我们更好地解决程序中的各种问题。

异常是在程序执行过程中发生并中断的情况。它可能由于多种原因而发生。比如:除法运算中分母为0的情况,会抛出:ZeroDivisionError;导入不存在的包时,会抛出:ImportError;列表越界时,会抛出:IndexError。python 中大约有30个内置异常。

我们使用 try 和 except 来处理 Python 中的异常。语法如下:

try:    pass # 可能发生异常的代码  
except ValueError:  
    pass # 发生异常时执行的代码  
except ZeroDivisionError:  
    pass # 发生异常时执行的代码  
else:  
    pass # 其他情况时执行的代码

finally:    

    pass # 最终执行的执行的代码

itertools 模块

Python itertools 模块提供了各种适用于组合计算的函数。

1.product(iterable,iterable):两个iterables的笛卡尔积

2.permutation(iterable):所有可能的排序,没有重复元素

3.combinations(iterable,n):指定长度的所有可能组合,不重复。这里 n 是组合元组的大小。

4.combinations_with_replacement(iterable,n):指定长度的所有可能的组合,重复。

5.accumlate(iterable) :返回累积iterable元素的总和。

6.groupby(iterable,key=FUNC) :返回一个迭代器,其中包含来自可迭代对象的连续键和组。

from itertools import product, permutations, combinations, combinations\_with\_replacement, accumulate, groupby  
a = \[1,2,3\]  
print(list(product(a,a))) # \[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)\]  
print(list(permutations(a))) # \[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)\]  
print(list(combinations(a,2))) # \[(1, 2), (1, 3), (2, 3)\]  
print(list(combinations\_with\_replacement(a,2))) # \[(1, 1), (1, 2), (1, 3), (2, 2), (2, 3), (3, 3)\]  
print(list(accumulate(a))) # \[1, 3, 6\]print(list(groupby(a))) # \[(1, ), (2, ), (3, )\]

lambda 函数

lambda 函数是一种匿名函数,它的语法只包含一个语句。

即:lambda [arg1 [,arg2,…argn]]:expression。

even\_or\_odd = lambda a: a%2==0  
numbers = \[1,2,3,4,5\]  
even = list(map(even\_or\_odd,numbers))  
print(even) # \[False, True, False, True, False\]

装饰器

装饰器是 Python 的一个特性,它可以在不显式修改现有代码的情况下向现有代码添加一些新功能。

有两种类型的装饰器——函数装饰器和类装饰器。装饰器函数在函数名前有一个@。

要理解装饰器的概念,我们首先需要了解一件事——python 中的函数是类对象。与其他对象不同,它们可以在函数内部定义,在其他函数中作为参数传递,甚至作为函数返回。

import functools  
defdecorator(func):  
     @functools.wraps(func)  
     def wrapper(\*args, \*\*kwargs):  
          a,b = args  
          print(a\*b)  
          result = func(\*args,\*\*kwargs)  
          print(a/b)  
          return result  
     return wrapper  
  
@decorator  
def add(x,y):  
      return x+y  
result = add(5,6)  
print(result) ##

让我们理解上面装饰器的例子:

首先,我们有一个函数名 add,它的工作是获取两个变量并返回它们的总和。现在经过一段时间的工作后,我们意识到需要为同一个函数添加乘法和除法功能。现在我们有两个选择,第一个是在同一个 add 函数中添加乘法和除法代码。或者我们可以使用装饰器来添加功能而无需显式更改函数。

为了使用装饰器,我们首先在第 2 行定义了一个装饰器函数。此函数将 func 作为输入。在第二行中,我们有另一个函数,因为我们知道我们可以在函数内部定义函数。它是一个具有 *args、**kwargs 函数参数的包装函数。有了这些,两者都定义为参数,现在我们可以在函数内部传递任意数量的参数。在包装函数的主体中,我们有乘法逻辑,然后仅使用加法逻辑调用实际的加法函数,最后我们有除法逻辑。当我们使用一些参数 add(5,6) 调用 add函数时,输出将是:

30  
0.8333333333333334  
11

因为它首先执行乘法逻辑并打印值,然后加法逻辑并保存值,然后除法逻辑并打印值,最后返回相加的值并打印值。

迭代器

生成器是一种返回可迭代对象的函数。它至少包含一个 yield 语句。yield 是 Python 中的一个关键字,用于从函数返回值而不破坏其当前状态或对局部变量的引用。带有 yield 关键字的函数称为生成器。相对于 return 你可以把 yield 理解为不中断函数的暂停,并且返回一个值。

生成器仅在需要时生成一次项目。它们的内存效率很高,占用的内存空间更少。

def  fibonacci(n):  
    a,b = 0,1  
    for i in range(n):  
        a,b = b,a+b  
        yield a  
  
for i in fibonacci(5):  
    print(i) ## 1 1 2 3 5

进程和线程

线程和多处理都用于同时运行多个脚本。进程是程序的一个实例,线程是进程中的一个实体。

线程化是多个线程同时运行以执行不同任务的技术,而多处理是多个进程同时运行在不同CPU上的技术。

日志

日志记录是在代码执行时捕获代码流的过程。日志记录有助于轻松调试代码。它通常在文件中完成,以便我们以后可以检索它。在 python 中,我们有一个库日志记录,可以帮助我们将日志写入文件。有五个级别的日志记录:

Debug 调试:用于诊断问题的详细信息。

Info 信息:成功确认。

Warning 警告:发生意外情况时。

Error 错误:由于比警告更严重的问题。

Critical 严重:严重错误后程序无法自行运行。

这儿作者推荐大家一个简单的日志记录工具:loguru。

双下划线方法

Dunder 是 Double 和 Under 的缩写,称为双下划线方法,是python中的一种特殊方法。

num =5  
print(num\*6) ## 30  
print(num.\_\_mul\_\_(6)) ## 30

这些方法主要用于重载预定义的运算符。例如,+、-、*、/ 是必须在数字对象周围使用的数字运算符,但 + 也用作两个字符串之间的连接运算符。所以我们可以说 + 运算符被重载来执行多个任务。

a =5  
b =6  
print(a+b) ## 11  
print(a.\_\_add\_\_(b)) ## 11  
c = 'hello'  
d = 'world'  
print(c+d) ## helloworld  
print(c.\_\_add\_\_(d)) ## helloworld

上下文管理器

上下文管理器是 Python 中的一个很好的工具,可以帮助进行资源管理。它们允许您在需要时分配和释放资源。上下文管理器最常用和最受认可的例子是 with 语句。with 主要用于打开和关闭文件。

with open('./test.txt', 'w') as f:  
    f.write('Hello World!')

上面分享的9个知识点,希望在你工作或面试中能够有所帮助。

最后这里免费分享给大家一份Python全台学习资料,包含视频、源码。课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
编程资料、学习路线图、源代码、软件安装包等!【点击这里】领取!
Python所有方向的学习路线图,清楚各个方向要学什么东西
100多节Python课程视频,涵盖必备基础、爬虫和数据分析
100多个Python实战案例,学习不再是只会理论
华为出品独家Python漫画教程,手机也能学习
历年互联网企业Python面试真题,复习时非常方便

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值