美文网首页
Python 好文收藏

Python 好文收藏

作者: DebugWorld | 来源:发表于2024-08-13 14:10 被阅读0次

Python 系统教程

Python 编程时光
Python3 菜鸟教程
廖雪峰 Python3 教程
《Python Cookbook》3rd Edition

基类必须重写和禁止重写

类方法的强制重写与禁止重写
在 Python 里面如何实现一个抽象类
如何让 Python 提醒你不能覆盖某个父类方法

Python 函数传参

Python 为什么会有命名关键字参数?

Python 变量

Python 就是这样设计的,它认为在函数体中,如果对变量有赋值操作,则证明这个变量是一个局部变量,并且它只会从局部变量中去读取数据。

Python不用声明变量吗?

Python 函数/方法

Python 中的 classmethod 和 staticmethod 有什么具体用途?
Python 实例方法、类方法、静态方法的区别与作用
Python函数接口的一些设计心得

yield

  • 大数据量的生成,但不可复用
  • 简化代码结构,一个函数使用yield,通过for不断的调用另外一个函数
  • 协程与并发的业务场景中
def f():
    for i in range(3):
        print("伪代码块1")
        yield i                 # 也可以通过 list().append(i), 最后return,但是需要整个函数运行结束才可以运行代码块3,如果数据量很大也会影响效率
        # 也可以在这运行 print(f"伪代码块3: {i}"),但是代码块3就和函数 f() 就高度耦合了,其他调用方是不需要代码块3的
        print("伪代码块2 \n")     # 也可以把 代码块2 放到函数外面,但是有时候代码块2就是和函数 f() 或者代码块1有耦合的,必须要放在这里。


for n in f():
    print(f"伪代码块3: {n}")

Python 闭包

特点:

  1. 必须有一个内嵌函数
  2. 内嵌函数必须引用外部函数中的变量
  3. 外部函数的返回值必须是内嵌函数。

定义:

在计算机科学中,闭包(Closure) 是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。

def f(x):
    z = x ** 2 + x + 1
    print('z is {}'.format(z))
    def helper(y):
        return y * z
    return helper


g = f(1) 
print(g(2) + g(1))

一般情况下,函数中的局部变量仅在函数的执行期间可用,一旦 f() 执行过后,我们会认为 z变量将不再可用。然而,在这里我们发现 f 执行完之后,在调用 g 的时候 z 变量的值正常输出了,这就是闭包的作用,闭包使得局部变量在函数外被访问成为可能。
闭包避免了使用全局变量,此外,闭包允许将函数与其所操作的某些数据(环境)关连起来。这一点与面向对象编程是非常类似的,在面对象编程中,对象允许我们将某些数据(对象的属性)与一个或者多个方法相关联。

注意: 通过nonlocal解决局部变量赋值问题

应用:

  1. 装饰器
  2. 惰性求值(有一个基础值,然后其他数组里每个值都对这个基础值进行计算,map()可实现同样功能,只不过map是一个数组,闭包可以单独调用)
  3. 缓存计算:递归函数、动态规划

一步一步教你认识Python闭包
设计闭包(Closure)的初衷是为了解决什么问题?
如何通俗地解释闭包的概念?
闭包概念考证

Python 装饰器

定义:

装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。

应用场景:

它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。

实例:loguru + 反射 + 偏函数 + 装饰器 + 异常捕获(传参) + 运行时间

注意:

被装饰后的函数其实已经是另外一个函数了,Python的functools包中提供了一个叫wraps的decorator来消除这样的副作用,来保证被装饰器装饰后的函数还拥有原来的属性,functools.wraps通过partial以及update_wrapper来实现。functools.partial 偏函数,常用于修改源码函数默认值。传参装饰器需要两层嵌套函数

多个解释器执行顺序:

image.png

一篇文章搞懂装饰器所有用法
Python 装饰器装饰类中的方法
带可选参数的装饰器
没看完这11 条,别说你精通 Python 装饰器

Python 猴子补丁(Monkey Patch)

猴子补丁(Monkey Patch)就是在运行过程中动态修改一个类的方法或变量等

  • 在运行时替换方法、属性等
  • 在不修改第三方代码的情况下增加原来不支持的功能
  • 在运行时为内存中的对象增加patch而不是在磁盘的源代码中增加

python面试题精讲——monkey patch(猴子补丁)

Python 继承

Python的方法解析顺序(MRO)

Python 断言

你真的会正确使用断言吗?

Python 异常处理的哲学

Python 工匠: 异常处理的三个好习惯
python异常处理的哲学
raise是更好的return
错误码设计

Python 上下文管理器

深刻理解上下文管理器
深入理解 Python 中的上下文管理器
Python进阶:With语句和上下文管理器ContextManager
Python中的上下文管理器和装饰器之间的区别
每次用上下文都需要 with 调用,而且 上下文可以调用多个函数


class Resource(object):
    """
    自建上下文管理器
    """
    def __init__(self, n):
        self.n = n

    def __enter__(self):
        print('===connect to resource===')
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print('===close resource connection===')

    def operate(self):
        print('===in operation===')

    def run(self):
        self.n()


def f():
    print("代码主体运行")


with Resource(f) as res:
    res.operate()
    res.run()

Python 新特征

PEP572: 海象运算符

TCP三次握手四次挥手

三次握手,四次挥手

高并发

深度对比 Python 几种并发方案的优缺点

相关文章

  • Python 好文收藏

    Python 系统教程 Python3 菜鸟教程[https://www.runoob.com/python3/p...

  • 2018-03-04

    一篇好文章收藏:

  • 好文收藏

    其实每个人的命都很苦,因为大家都面对一样的社会和世界。只是有些人愿意做出极大的努力去改变,让自己的成绩突出一点,但...

  • 好文收藏

    人生不过如此 文/林语堂 在不违背天地之道的情況下,成为一个自由而快乐的人。这就好比一台戏,优秀的演员明知其...

  • 好文收藏

    端午节快到了,送您一首诗[玫瑰][玫瑰][玫瑰]《当你静下心来的时候》 当你静下心来的时候 整个宇宙成了你的万有 ...

  • 好文收藏

    男人之美在于大度,女人之美在于善良,孩子之美在于天真,家庭之美在于和谐,生活之美在于品位,朋友之美在于真诚。看的是...

  • 好文收藏

    我乃六零后,而今五十多。生在土坯房,用的四方桌。吃的是母乳,牛奶没见过。干草打地铺,姐妹同被窝。卫生不太好,跳蚤特...

  • 好文收藏

    当下社会现状,被一个高中毕业生破解了: 2016南宁市三中高考滿分的作文,看了感触真深刻。800字的文章表达的如此...

  • 好文收藏

    在最该奋斗的时候,过早地提“淡泊名利”、提“平淡是真”,你确定你现在的“平淡”撑到十年后、二十年后,不会变成穷困潦...

  • 好文收藏

    家乡文化中母亲那一辈的女人大多保守,早早也草草嫁了人,一辈子守住一桩婚姻,不散就好,从不管自我生命的流向。我见得最...

网友评论

      本文标题:Python 好文收藏

      本文链接:https://www.haomeiwen.com/subject/gdljkjtx.html