Python 好文收藏

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 几种并发方案的优缺点

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容