自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(188)
  • 资源 (2)
  • 收藏
  • 关注

原创 Python线程 适合I/O处理以及涉及阻塞操作的并发执行任务,不适合计算密集型

由于 GIL 的存在,Python 线程在处理计算密集型任务时无法充分利用多核 CPU 的优势,因此不适合用于计算密集型任务。然而,对于 I/O 密集型任务和涉及阻塞操作的任务,多线程可以在等待 I/O 完成时释放 GIL,使其他线程继续执行,从而提高并发性和效率。因此,Python 线程更适合用于处理 I/O 和阻塞操作。

2024-09-05 17:33:10 929

原创 Python 命名空间包是否包含__init__.py的区别

文件时,Python 会将该目录视为一个包(package)。这允许你组织和结构化你的代码,并提供了一些额外的功能。文件,目录也可以被视为一个包,这被称为"命名空间包"。但是,它缺少一些上面提到的功能。这两种情况确实有一些区别。让我为你详细解释并提供代码示例。在 Python 3.3+ 中,即使没有。Python 目录下有。

2024-07-14 15:13:11 207

原创 Python 用相对名称来导入包中的子模块

尽管看起来似乎可以利用相对导入来访问整个文件系统,但实际上是不允许跳出定义包的那个目录的。也就是说,利用句点的组合形式进入一个不是Python包的目录会使得导入出现错误。

2024-06-21 13:50:07 962

原创 Python 装饰器为被包装的函数添加参数

我们想编写一个装饰器为被包装的函数添加额外的参数。但是,添加的参数不能影响到该函数已有的调用约定。

2024-06-03 17:12:34 154

原创 Python __get__和__call__

总之,__call__方法用于让类的实例像函数一样被调用,而__get__方法则是实现描述符协议,用于动态地访问属性。这两个方法为 Python 的面向对象编程提供了更加灵活和强大的功能。

2024-05-16 15:12:21 387

原创 Python 继承顺序

在 Python 中,当一个类继承自多个父类时,解释器会按照一定的顺序搜索属性和方法。这个搜索顺序被称为方法解析顺序(Method Resolution Order, MRO)。继承顺序的逻辑是非常重要的,它决定了在使用子类的属性和方法时,Python 解释器的搜索顺序。这是因为 Python 的继承顺序遵循深度优先、从左到右的原则。方法,发现没有定义,然后按照 MRO 顺序在。方法,发现有定义,于是执行。理解好继承顺序的逻辑,可以帮助。时,Python 会先在。类的实例,并调用它的。

2024-05-09 11:34:16 484

原创 Python 定义一个属性可由用户修改的装饰器

下面给出的解决方案对上一节的示例进行了扩展,引入了访问器函数(accessor function),通过使用nonlocal关键字声明变量来修改装饰器内部的属性。在这种情况下,attach_wrapper 函数返回一个新的偏函数(partial function),它接受一个 func 参数。关键就在访问器函数(即,set_message()和set_level()),它们以属性的形式附加到了包装函数上。这行代码将 func 函数附加到 obj 对象上,函数名称为 func.这是函数的定义部分。

2024-05-08 13:51:20 337

原创 Python 装饰器 @wraps()

在 Python 中,装饰器是一个特殊的函数,它可以修改或扩展另一个函数的行为。装饰器是一个小函数,它接受另一个函数作为参数,并返回一个新的函数,该新的函数“包装”了原始函数。

2024-04-19 16:38:28 433

原创 Python 函数function和方法method区别

总的来说,函数和方法都是 Python 中的重要概念,但它们的使用场景和语义略有不同。理解这些差异有助于编写更加清晰和可维护的 Python 代码。函数直接调用,而方法需要通过类的实例来调用,并使用。

2024-04-16 15:55:12 414

原创 Python property用法

是一个内置函数,用于将一个方法转换为属性。这意味着您可以像访问属性一样访问该方法,而不需要使用括号()来调用它。这对于实现数据封装和控制访问非常有用。是一个强大的 Python 特性,可以帮助您创建更加面向对象和可维护的代码。在 Python 中,

2024-04-16 14:08:11 220

原创 Python 选择用类或方法做装饰器的场景

当装饰器的功能相对简单,不需要保持任何状态信息时,使用方法作为装饰器是一个不错的选择。这种情况下,装饰器通常只是对被装饰函数进行一些额外的操作,比如记录日志、增加权限检查等。当装饰器需要保持一些状态信息,或者需要更复杂的功能时,使用类作为装饰器会更加合适。这种情况下,装饰器可以利用类的属性和方法来实现更复杂的逻辑。总的来说,使用方法作为装饰器更适合于简单的装饰器功能,而使用类作为装饰器则更适合于需要保持状态信息或实现更复杂逻辑的场景。是一个装饰器函数,它接受一个函数作为参数,并返回一个新的函数。

2024-04-16 13:35:37 321

原创 Python 类方法应用场景

类方法通常用于创建与类本身相关的方法,而不是与特定的实例对象相关的方法。使用类方法可以让代码更加灵活和可扩展。通过类方法,你可以在不修改类的实现细节的情况下,添加新的功能和行为。: 类方法可以用作备选构造器,即提供多种不同的方式来创建一个类的实例。这样可以使类的使用更加灵活和方便。Python 中的类方法是一种特殊的方法,它与普通的实例方法有一些不同之处。: 类方法可以用于实现工厂模式,根据不同的输入参数返回不同类型的对象实例。: 类方法可以用于管理类的状态和属性,比如设置或获取类级别的配置信息等。

2024-04-12 17:39:25 306

原创 Python 装饰器

这些只是 Python 装饰器的一些常见使用场景,实际上装饰器的应用范围非常广泛,可以用于优化、扩展和重构代码,提高代码的可读性和可维护性。这种异常处理装饰器可以用于统一处理多个函数的异常,避免在每个函数中重复编写异常处理代码。是的,Python 中的类装饰器可以用来取代 mixin 类、多重继承以及对。使用装饰器实现属性的 getter、setter 和 deleter 方法。使用装饰器实现自定义的上下文管理器。使用装饰器实现函数的访问权限控制。使用装饰器实现事件的注册和触发。

2024-04-12 15:37:43 500

原创 Python 反射

这些示例展示了如何使用 Python 的反射机制来动态访问对象的属性和方法。需要注意的是,反射是一个强大但也可能危险的工具,应该谨慎使用。总的来说,Python 反射是一个非常有用的功能,但使用时需要谨慎,以确保代码的安全性和可维护性。: 反射可以用来实现动态配置,允许程序在运行时根据配置文件或其他输入动态地调整自己的行为。: 反射可以用来实现插件和扩展机制,允许用户在不修改主程序代码的情况下扩展程序的功能。: 反射可以用来实现元编程,即在运行时修改程序的结构和行为。

2024-04-12 15:23:17 411

原创 Python 描述符

是 Python 中一个非常强大的特性,它允许我们自定义属性的访问行为。使用描述符,我们可以创建一些特殊的属性,在访问这些属性时执行自定义的逻辑,如数据验证、属性计算等。时,相应的描述符方法会被调用,并执行我们自定义的逻辑。**数据描述符:**用于修改属性的访问和修改行为。**delete:**在属性被删除时被调用。**方法描述符:**用于修改方法的行为。**call:**在方法被调用时被调用。**get:**在属性被访问时被调用。**set:**在属性被设置时被调用。在这个例子中,我们定义了一个。

2024-04-07 17:55:12 627

原创 Python mixin

Python 中的 Mixin 类是一种特殊的继承机制,它允许我们在不修改类层次结构的情况下,向一个类添加额外的功能。Mixin 类通常包含一些可复用的方法或属性,可以被其他类继承和使用。: 通过 Mixin 类,我们可以在不修改类层次结构的情况下,动态地向类添加功能。这增加了代码的灵活性和可扩展性。: Mixin 类通常通过多重继承的方式被其他类使用。这允许类具有多种功能,而不需要将所有功能集中在一个类中。: Mixin 类包含可重用的方法或属性,可以被多个类继承和使用,提高了代码的复用性。

2024-04-07 10:44:23 396

原创 Python 抽象类

这种灵活性使得抽象基类可以更好地定义和约束接口,提高代码的可维护性和可扩展性。开发者可以根据需求选择使用普通方法、静态方法、类方法或属性来定义抽象接口。抽象基类可以定义一些必须被实现的行为(抽象方法),同时也可以提供一些通用的功能(具体方法),让子类可以直接使用。总之,在Python的抽象基类中,方法不必全部是抽象方法,具体方法也是可以存在的。在Python的抽象基类(ABC)中,方法并不是必须全部是抽象方法。装饰器不仅可以用于普通方法,还可以用于静态方法、类方法和属性(property)。

2024-04-02 17:42:27 967

原创 Python 子类中拓展父类属性

注意: 如果只想重新定义其中的一个方法,只使用@property是不够的。例如,下面这样的代码是无法工作的, 不能用。子类SubPerson2 只想拓展属性的部分方法, 可以用如下方法实现。子类SubPerson继承所有父类属性, 并在属性中拓展自己的操作。上面代码运行结果如下。

2024-03-29 13:32:56 176

原创 Python __variable__ 或 __method__()的双下划线名称重整”(name mangling)理解

双下划线名称重整也可用于模拟私有成员,即限制对属性和方法的直接访问。虽然在 Python 中没有严格的私有性,但是通过名称重整可以模拟私有成员,使其不容易被外部访问。在 SubClass 的 use_functions() 方法中,我们调用了父类的 public_method(),并尝试访问父类的私有属性和方法。双下划线名称重整的使用有助于确保代码的健壮性和安全性,尤其在大型项目中。在类定义中,双下划线名称重整用于防止子类意外覆盖父类的属性或方法。由于名称重整的原因,在子类中无法直接访问父类的。

2024-03-28 15:08:56 209

原创 Python 访问定义在闭包内的变量

一般来说,在闭包内层定义的变量对于外界来说完全是隔离的。但是,可以通过编写存取函数(accessor function,即getter/setter方法)并将它们作为函数属性附加到闭包上来提供对内层变量的访问支持。

2024-03-28 11:47:21 341

原创 Python nonlocal

关键字用于在嵌套函数中访问外层函数的非全局变量。它是Python中的一个特殊关键字,用于解决内部函数无法直接修改外部函数变量的问题。是Python中一个非常有用的关键字,它可以帮助开发者解决函数作用域问题,实现更加灵活和强大的编程模式。,可以大大提高代码的可读性和可维护性。下面我们来详细介绍一下。

2024-03-21 14:43:11 454

原创 Python 闭包

简单来说,闭包是一个函数,它可以访问其定义时所在的作用域中的变量,即使这个变量在函数执行完毕后也不会被销毁。在这个例子中,make_adder函数返回一个闭包adder。adder函数可以访问make_adder中的变量n,即使make_adder函数执行完毕后,n也不会被销毁。在这个例子中,log_call函数是一个闭包,它返回一个新的函数wrapper。这样实现了变量的私有性。在这个例子中,make_multiplier函数是一个"函数工厂",它返回一个新的乘法函数,根据不同的参数n表现出不同的行为。

2024-03-21 14:32:07 715

原创 Python lambda函数绑定变量值

这里的问题在于lambda表达式中用到的x是一个自由变量,在运行时才进行绑定而不是定义的时候绑定。因此,lambda表达式中x的值应该是在执行时确定的,执行时x的值是多少就是多少。现在请问自己一个问题,a(10)和b(10)的结果是多少?

2024-03-21 13:47:44 145

原创 Python sorted()函数

是 Python 中的一个内置函数,用于对可迭代对象进行排序。这意味着它可以用来排序列表、元组、字典(基于键)以及其他可迭代的对象。例如,你可以基于对象的某个属性或者更复杂的数据结构中的值来排序。函数返回一个新的、排序后的列表,原始输入对象不会被修改(即它是不可变的)。是 Python 中一个非常实用的函数,它提供了强大而灵活的方式来排序各种类型的数据。本身不能直接排序字典,但你可以用它来基于字典的键或值进行排序。函数的基本用法和高级特性的详细讲解。

2024-03-15 15:41:45 471

原创 Python sorted()函数

是 Python 中的一个内置函数,用于对可迭代对象进行排序。这意味着它可以用来排序列表、元组、字典(基于键)以及其他可迭代的对象。例如,你可以基于对象的某个属性或者更复杂的数据结构中的值来排序。函数返回一个新的、排序后的列表,原始输入对象不会被修改(即它是不可变的)。是 Python 中一个非常实用的函数,它提供了强大而灵活的方式来排序各种类型的数据。本身不能直接排序字典,但你可以用它来基于字典的键或值进行排序。函数的基本用法和高级特性的详细讲解。

2024-03-15 14:54:12 657

原创 Python 元数据信息附加到函数参数上

在Python中,将元数据信息附加到函数参数上通常是通过使用注解(annotations)实现的。函数注解提供了一种方式,允许为函数的参数和返回值附加额外的信息。通常,这些信息用于类型检查、文档生成或其他工具,但实际上它们可以是任何类型的数据。注解本身不会改变Python代码的运行方式,也就是说,Python解释器会忽略注解的内容。但是,注解可以被其他工具或框架用来提供额外的功能,例如静态类型检查工具(如mypy)会使用注解来检查代码中类型的正确性。属性,它是一个字典,包含了所有的注解信息。

2024-03-15 13:46:48 263

原创 Python keyword-only参数

keyword-only 参数是Python 3中引入的一种新的参数语法。它允许您在定义函数时强制要求某些参数必须以关键字参数的形式传递。这种机制有助于提高代码的可读性和可维护性。总之,keyword-only 参数是Python 3中的一个有用特性,它可以帮助您编写更加清晰、可维护的代码。)被称为keyword-only参数。它们只能通过关键字参数的形式传递,而不能作为位置参数传递。是一个特殊的分隔符,它的作用是将位置参数和关键字参数分开。

2024-03-15 13:39:54 597

原创 Python 任意数量位置参数*args和关键字参数**kwargs

是两种特殊的参数形式,用于接收可变数量的参数。下面是一个示例,演示了。在 Python 中,

2024-03-15 10:11:32 392

原创 Python 内置函数iter

函数提供了一种方便的方法来创建和使用迭代器。这使得我们可以轻松地遍历可迭代对象的元素,并在需要时自定义迭代行为。是Python的一个内置函数,用于从可迭代对象(如列表、元组、字符串等)创建一个迭代器。迭代器是一个对象,支持。函数,可以遍历集合的元素。当没有更多元素可用时,迭代器引发。在这个示例中,我们创建了一个特殊的迭代器,它在每次调用。当生成的随机数等于5时,迭代器引发。函数返回一个迭代器对象,可以使用。

2024-03-14 18:02:15 400

原创 Python yield from

是Python生成器(generator)中的一个语法,用于简化生成器的操作。它可以使一个生成器委托部分操作给另一个生成器,从而简化代码。是一种简化生成器操作的方法,尤其是在需要合并多个生成器时。它提供了一种更简洁、更易读的方法来组合生成器的输出。的一个常见场景是将多个生成器组合成一个生成器。这样,可以将生成器的逻辑分解成更小、更易于管理的部分。这样,我们无需使用嵌套循环或其他复杂的逻辑就可以组合生成器的输出。之前,我们需要了解一下生成器。可以在一个生成器中包含另一个生成器的所有值,而无需显式地使用循环。

2024-03-14 16:30:06 413

原创 Python itertools.chain()

中的一个函数,用于将多个可迭代对象连接成一个可迭代对象。它的作用是将传入的多个可迭代对象按顺序连接起来,返回一个可迭代的链对象。函数连接了不同类型的可迭代对象,包括列表、元组、字符串和生成器。通过将这些可迭代对象作为参数传递给。函数在处理多个可迭代对象时非常有用,它可以避免创建临时列表,提高代码的效率和可读性。函数返回的是一个可迭代对象,而不是列表。如果需要将结果转换为列表,可以使用。函数,我们可以将它们按顺序连接成一个新的可迭代对象。函数进行转换,如示例中所示。在上述示例中,我们使用。

2024-03-14 14:13:03 860

原创 性能测试P90

介绍性能测试P90概念和计算公式

2023-05-22 10:12:50 760

原创 How do implicit relative imports work in Python?

python 引用模块问题参考如下文章How do implicit relative imports work in Python?Stack Overflow中的原文Relative imports - ModuleNotFoundError: No module named x

2020-11-02 10:23:40 177

原创 How to use “print“ in behave

First, before anything else:You are entering and comparing strings and not numbers in your steps.Per default, behave captures stdout. This captured output is only shown if a failure occurs.This behaviour is sufficient for most cases.If you do not like

2020-10-14 09:12:54 464

原创 excel判断单元格是否包含其他单元格内容

比如查询A2是否包含A2是否包含A2是否包含D2中的内容=IF(COUNT(FIND(D2,D2,D2,A2))>0,“是”,“否”)数组

2020-10-13 17:04:51 7168

原创 Python自动化轮播控件中元素not clickable报错处理

##问题:想要进行依次点击专题栏中的链接. 下方是一个轮播条.在点击A中第二篇文章时, 报错 . is not clickable at point (481, 343). Other element would receive the click:##解决方案:判断为轮播抢走了浏览器焦点. 导致点击失败. 获取一个固定的元素, 这里获取了专题栏的title元素. 在每次点击文章前, 先执行下点击专题栏标题操作, 抢回焦点. 问题解决....

2020-10-09 15:29:48 4131

原创 Anaconda建立新的环境,出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url

进入”C:\Users\Administrator“,打开“.condarc“,你将会看到以下代码ssl_verify: trueshow_channel_urls: truechannels: - defaults”- default“,请删除它将文件编辑为ssl_verify: trueshow_channel_urls: truechannels: - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-6

2020-06-27 13:41:18 1504

原创 Python创建实例方法,类方法,静态方法时选择依据

如果方法需要调用实例属性或实例方法, 那么创建实例方法如果方法不需要调用实例属性活实例属性, 但是需要调用类属性, 那么创建实例方法如果方法不需要实例属性和类属性, 那么创建静态方法...

2019-11-14 21:11:46 177 1

原创 Edge, IE11修改cookie

Edge, IE11修改cookiechrome可以直接在控制台 application中 直接修改cookieedge和ie11 不能直接修改, 可以通过在控制台运行JSdocument.cookie = "cookie_name=cookie_value";...

2019-10-15 18:06:25 5598

转载 Css Selector

Multiple attribute selectors can be used to represent several attributes of an element, or several conditions on the same attribute. Here, the selector represents a span element whose hello attribute ...

2019-07-22 15:13:15 196

SourceCodePro 代码字体下载

SourceCodePro 代码字体下载, adobe推出, 适合任何代码编写

2015-09-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除