Python 3.12 引入了一些新的特性和改进,提升了开发体验和代码性能。以下是其中一些值得注意的新函数和改进:
虽然这些函数在 Python 3.9 就已引入,但它们在 Python 3.12 中变得更加广泛使用。
s = "HelloWorld"print(s.removeprefix("Hello")) # 输出: Worldprint(s.removesuffix("World")) # 输出: Hello
返回从 x 开始,到 y 方向的下一个浮点数。这个函数对需要精确控制浮点数计算的场景非常有用。
import mathprint(math.nextafter(1.0, 2.0)) # 输出: 1.0000000000000002print(math.nextafter(1.0, 0.0)) # 输出: 0.9999999999999999
这个属性允许你访问原始的命令行参数列表,包括解释器自身的参数,而不仅仅是脚本和传递给脚本的参数。
import sysprint(sys.orig_argv)
在 Python 3.12 中,functools.cache_clear() 方法被添加到 functools.lru_cache 修饰器中,用于清除缓存。
from functools import lru_cache@lru_cache(maxsize=32)def fibonacci(n): if n < 2: return n return fibonacci(n-1) + fibonacci(n-2)# 清除缓存fibonacci.cache_clear()
Python 3.12 对 typing 模块进行了多项改进,包括更好的类型推断和新的类型提示功能。例如,可以使用 Self 类型提示方法的返回类型为类实例本身。
from typing import Selfclass MyClass: def my_method(self) -> Self: return self
类似于 contextlib.closing 但用于异步生成器对象。
import contextlibclass AsyncGenerator: async def __aenter__(self): print("Entering") return self async def __aexit__(self, exc_type, exc, tb): print("Exiting") async def __aiter__(self): for i in range(5): yield iasync def main(): async with contextlib.aclosing(AsyncGenerator()) as agen: async for item in agen: print(item)# 运行异步主函数import asyncioasyncio.run(main())
产生一对连续元素的迭代器。
import itertoolsfor pair in itertools.pairwise([1, 2, 3, 4]): print(pair)# 输出: (1, 2), (2, 3), (3, 4)
对时区信息进行了增强,更好地支持时间相关操作。
from zoneinfo import ZoneInfofrom datetime import datetimedt = datetime(2024, 6, 14, tzinfo=ZoneInfo("America/New_York"))print(dt)
这些新特性和改进使得 Python 3.12 更加强大和易用,为开发者提供了更多工具来编写高效、可维护的代码。建议大家尽早升级并尝试这些新特性。
本文链接:http://www.28at.com/showinfo-26-94851-0.html赶紧试试 Python 3.12 吧,真的好用
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
下一篇: 十分钟了解 Golang 泛型