在过去的几十年中,Python已经成为编程或脚本语言领域中的一个响亮的名字。Python之所以受到广泛青睐,主要是因为它极其用户友好的特性。Python也被用于处理复杂的程序或编码挑战。机器学习(ML)、人工智能(AI)和数据科学等新兴领域也增加了学习这门语言的需求。与传统语言如Java、C#等相比,Python是一种强大的编程语言,它迅速成为开发者、数据科学家和AI/ML爱好者的首选。
Python的多样化应用
Python作为编程语言,有着吸引学习者和IT行业专家的多种用例。在基础层面上,Python可以被用作练习数据结构和算法的编程语言,或者开发简单的项目或游戏。Python作为一门语言的多功能性,允许用户轻松扩展他们的项目,创建网站、软件或预测模型。自动化正在接管IT行业的大部分领域,Python作为自动化数据分析或数据科学任务的首选语言。除此之外,Python拥有大量的库和一个强大的程序员社区,他们不断地为Python语言增加更多价值。
理解Python及其用例
初学者被Python吸引的原因之一是它的用户友好性。Python摒弃了令人畏惧的分号,使用简单的缩进结构作为其语法。Python还用作需要可编程接口的应用程序的扩展。Python的一些更多好处包括它最令人向往的特性,即它的库。Python库是一个庞大的资源,用于许多关键的代码编写,例如:
- 基于正则表达式的代码
- 字符串处理
- 互联网协议,如HTTP、FTP、SMTP、XML-RPC、POP、IMAP
- Unicode
- 文件系统和计算文件之间的差异
- CGI编程
- 数学建模
- 数据库查询
- 数据分析
- 数据可视化
- 自动化代码
所有这些特性都可以在许多Unix、Linux、macOS和Windows系统上执行。
Python 3.9与Python 3.10的差异分析
多年来,Python经历了许多升级,许多特性被添加到新版本中。这里,让关注Python添加的两个最新版本。探索新特性有助于更顺利地使用它,当然,还可以找到使用新库的更智能的工作方式。下面附上的所有代码仅供教育目的,并且是从与新版本一起发布的原始Python文档中提取的,例如Python 3.9和Python 3.10。
IANA时区数据库
# 新增zoneinfo模块,提供对IANA时区数据库的访问
from datetime import datetime
from zoneinfo import ZoneInfo
print(datetime(2021, 7, 2, 12, 0).astimezone())
print(datetime(2021, 7, 2, 12, 0).astimezone().strftime("%Y-%m-%d %H:%M:%S %Z"))
print(datetime(2021, 7, 2, 12, 0).astimezone(ZoneInfo("UTC")))
输出:
2020-07-2 12:00:00-05:00
2020-07-2 12:00:00 EST
2020-07-2 17:00:00+00:00
Python 3.9增加了一个引人注目的新特性。Python 3.9现在可以使用操作符合并或更新字典。新的操作符(|)和(|=)已被添加到Python 3.9内置的dict类中。可以使用这些操作符合并或更新字典,如下所示。
# 字典合并
a = {'v': 1, 'art': 2, 'py': 3}
b = {'v': 'd', 'topic': 'python3.9'}
print(a | b) # {'art': 2, 'py': 3, 'v': 'd', 'topic': 'python3.9'}
print(b | a) # {'v': 1, 'art': 2, 'py': 3, 'topic': 'python3.9'}
# 字典更新
a |= b
print(a) # {'art': 2, 'py': 3, 'v': 'd'}
Python3.9中添加的新特性使得字符串处理问题更容易解决。下面的示例代码用于从示例字符串中剥离前缀和后缀。下面示例代码中使用的新方法有:
# removeprefix() - 移除给定样本字符串中的前缀
# removesuffix() - 移除给定样本字符串中的后缀
print("Victor is playing outside".removeprefix("Victor "))
输出:
'is playing outside'
Python 3.9版本启用了对所有标准集合的泛型语法的支持,这些集合目前可在typing模块中找到。泛型类型通常被定义为容器,例如列表。它是一种可以轻松参数化的类型。通常,泛型类型有一个或多个类型的参数,而参数化泛型是具有容器元素的泛型数据类型的特定实例,例如列表或字典内置集合类型是支持的类型,而不是特别使用typing.Dict或typing.List。
def print_value(input: str):
pass # 指定传入的值将为字符串类型
结构模式匹配
# 新增结构模式匹配特性
http_code = "419"
match http_code:
case "200":
print("Hi")
case "404":
print("Not Found")
case "419":
print("You Found Me")
case _: # 默认情况
print("Code not found")
许多程序员在错误匹配或调试代码时遇到困难。Python 3.10添加了一个非常用户友好的特性,称为关联建议,与语法错误消息一起标记。这有助于快速找到有错误或错误的代码的修复方法。
named_car = 77
print(new_car)
输出:
NameError: name 'new_car' is not defined. Did you mean: named_car?
# Python 3.9
from typing import Union
def add(a: Union[int, float], b: Union[int, float]):
pass
# Python 3.10
def add(a: int | float, b: int | float):
pass
# 旧语法
with open('output.log', 'rw') as fout:
fout.write('hello')
# 新语法
with (open('output.log', 'w') as fout, open('input.csv') as fin):
fout.write(fin.read())