2K+ 阅读量
简介 我们在 Python 中使用 re 模块进行正则表达式操作。文本搜索和更复杂的文本操作都使用正则表达式。像 grep 和 sed 这样的工具、像 vi 和 emacs 这样的文本编辑器以及像 Tcl、Perl 和 Python 这样的计算机语言都内置了正则表达式支持。Python 中的 re 模块提供了用于匹配正则表达式的函数。定义我们正在查找或修改的文本的正则表达式称为模式。此字符串由文本字面量和元字符组成。compile 函数用于创建模式。建议使用原始字符串,因为正则表达式... 阅读更多
1K+ 阅读量
要理解为什么字典键必须是不可变的,让我们将其与哈希表相关联。字典的哈希表实现使用从键值计算的哈希值来查找键。如果假设键是一个可变对象,则它的值可能会发生变化,因此它的哈希值也可能会发生变化。如上所述,由于任何更改键对象的人都不知道它被用作字典键,因此它无法在字典中移动条目。然后,当您尝试在字典中查找相同的对象时,它将不会... 阅读更多
554 阅读量
CPython 是 Python 的默认且使用最广泛的解释器或实现。它是原始的 Python 版本,并且理解使用 Python 规范编写的代码。Python 对退出时清理内存非常重视,并且确实尝试销毁每个对象,但不幸的是,Python 模块的全局命名空间引用的对象在 Python 退出时并不总是被释放。原因是循环引用。还有一些由 C 库分配的内存位无法释放。使用 atexit 模块强制 Python 在释放时删除某些内容。... 阅读更多
是的,Python Lambda 表达式不能包含语句。在深入探讨原因之前,让我们先了解什么是 Lambda、它的表达式和语句。Lambda 表达式允许定义匿名函数。lambda 函数是匿名函数,即没有名称的函数。让我们看看语法 - lambda 参数:表达式 关键字 lambda 定义了一个 lambda 函数。lambda 表达式包含一个或多个参数,但它只能有一个表达式。Lambda 示例 让我们看一个例子 - myStr = "Thisisit!" (lambda myStr : print(myStr))(myStr) 输出 Thisisit! 按值对列表排序... 阅读更多
5K+ 阅读量
Python 语言中的所有参数(参数)都是按引用传递的。这意味着如果您在函数中更改参数引用的内容,则更改也会反映到调用函数中。通过以下方式实现这一点 - 返回结果的元组 示例 在此示例中,我们将返回结果的元组 - # 函数定义 def demo(val1, val2): val1 = '新值' val2 = val2 + 1 return val1, val2 x, y = '旧值', 5 # 函数调用 print(demo(x, y)) ... 阅读更多
212 阅读量
线程有时被称为轻量级进程,它们不需要太多内存开销;它们比进程便宜。线程有一个开始、一个执行序列和一个结论。有两个模块支持在 Python3 中使用线程 - _thread - 在 Python 3 中已弃用 Threading - 在 Python 2.4 中引入 Threading 模块 Python 2.4 附带的较新的 threading 模块比 thread 模块提供了更强大、更高级别的线程支持。threading 模块公开了 thread 模块的所有方法,并提供了一些其他方法 - threading.activeCount() ... 阅读更多
609 阅读量
运算符优先级确定表达式中项的组合方式,并决定如何评估表达式。逗号不是 Python 中的运算符;因此,优先级概念在这里不起作用。在继续之前,让我们首先查看 Python 中从最高优先级到最低优先级的运算符优先级。序号 运算符和描述 1 ** 幂运算(乘方) 2 ~ + - 补码、一元加和减(后两者的方法名称为 +@ 和 -@) 3 * / % // 乘、除、模和地板除... 阅读更多
3K+ 阅读量
__del__ 是 Python 中的魔术方法。魔术方法允许我们在面向对象编程中做一些非常巧妙的技巧。它们也称为 Dunder 方法。这些方法由用作前缀和后缀的两个下划线 (__) 识别。在 Python 中,我们使用 __new__() 创建对象,并使用 __init__() 初始化对象。但是,要销毁对象,我们有 __del__()。示例 让我们创建和删除一个对象 - class Demo: def __init__(self): print("我们正在创建一个对象。"); # 析构函数 def __del__(self): ... 阅读更多
236 阅读量
为此,首先了解 Python 中的 __new__() 方法是什么。当对不可变类型进行子类化时,覆盖 __new__() 方法而不是 __init__() 方法。__new__ 方法在创建对象时被调用,而 __init__ 方法将被调用以初始化对象。这些是魔术方法。魔术方法允许我们在面向对象编程中做一些非常巧妙的技巧。它们也称为 Dunder 方法。这些方法由用作前缀和后缀的两个下划线 (__) 识别。显示 int 类继承的魔术方法 示例 使用 fir(),我们可以打印... 阅读更多
缓存方法的两个工具是 functools.cached_property() 和 functools.lru_cache()。这两个模块都是 functools 模块的一部分。functools 模块用于高阶函数:作用于或返回其他函数的函数。让我们首先安装并导入 functools 模块 - 安装 functools 要安装 functools 模块,请使用 pip - pip install functools 导入 functools 要导入 functools - import functools 让我们逐一了解这两个缓存 - cached_property() 对于实例的昂贵计算属性很有用,否则这些属性实际上是不可变的。cached_property 方法仅适用于执行... 阅读更多