2024-04-23 14:26:55 发布
网友
我无法运行此代码:
match shape: case Point(x, y): ... case Rectangle(x, y, _, _): ... print(x, y)
我在Python中找不到match关键字
match
我在这里找到的:https://www.python.org/dev/peps/pep-0622/#the-match-statement
有什么想法吗
截至2021年3月,结构模式匹配不仅正式接受,而且在最新的alpha和Python 3.10开发版本中也可用。上周我写了一篇文章"Get started with Pattern Matching in Python, today!"详细介绍了如何实现这一目标,但我将在这里做一个简短的回顾
首先确保已经安装并设置了pyenv。在这一点上,简单地做
pyenv install 3.10-dev
您现在可以在本地激活测试版并运行解释器
pyenv local 3.10-dev python Python 3.10.0a6+ (heads/master:87f649a409, Mar 11 2021, 16:29:20) [Clang 12.0.0 (clang-1200.0.32.29)] on darwin Type "help", "copyright", "credits" or "license" for more information.
如果您不想让3.10直接在本地系统中运行,也可以使用docker。新的alpha 6已经启动,3.10.0a6解释器可以在这样的容器中轻松启动
docker run -it python:3.10.0a6-buster
这就是在python中使用/测试新结构模式匹配的两种不同方法
注意:这仍然是早期版本,完成的版本将在10月份提供,因此暂时不要在此功能上构建生产堆栈。但是如果你想用未来的概念做实验,你可以今天就做
更新2021-04-19:Python 3.10将introduce a structural pattern matching。有关这方面的更多详细信息,请参阅其他优秀答案
您所指的源代码是一个PEP(Python增强建议),它还没有在一个稳定的版本中实现。此外,政治公众人物已被PEP634取代
截至2021年初,发布的Python版本中不存在match关键字<;=3.9.
由于Python在其他语言中没有任何类似于switch/case的功能,因此通常使用嵌套的if/elif/else语句或字典
if/elif/else
这是一个基于你的问题的例子,尽管我现在还不清楚你想要实现什么
class Point: def __init__(self, x, y): pass class Rectangle: def __init__(self, x1, y1, x2=0, y2=0): pass shapes = dict( point=Point, rectangle=Rectangle, ) my_obj = shapes['point'](x, y)
PEP 634、PEP 635和PEP 636是尚未接受并随后实施的Python增强建议中的三个
这意味着它只是一个概念证明,请求者希望在未来看到它,但它尚未开发出来。此外,也没有人能保证这一点,政治公众人物更倾向于一厢情愿
截至2021年3月,结构模式匹配不仅正式接受,而且在最新的alpha和Python 3.10开发版本中也可用。上周我写了一篇文章"Get started with Pattern Matching in Python, today!"详细介绍了如何实现这一目标,但我将在这里做一个简短的回顾
通过pyenv安装3.10-dev/a6
首先确保已经安装并设置了pyenv。在这一点上,简单地做
您现在可以在本地激活测试版并运行解释器
通过docker容器运行
如果您不想让3.10直接在本地系统中运行,也可以使用docker。新的alpha 6已经启动,3.10.0a6解释器可以在这样的容器中轻松启动
这就是在python中使用/测试新结构模式匹配的两种不同方法
注意:这仍然是早期版本,完成的版本将在10月份提供,因此暂时不要在此功能上构建生产堆栈。但是如果你想用未来的概念做实验,你可以今天就做
更新2021-04-19:Python 3.10将introduce a structural pattern matching。有关这方面的更多详细信息,请参阅其他优秀答案
您所指的源代码是一个PEP(Python增强建议),它还没有在一个稳定的版本中实现。此外,政治公众人物已被PEP634取代
截至2021年初,发布的Python版本中不存在
match
关键字<;=3.9.由于Python在其他语言中没有任何类似于switch/case的功能,因此通常使用嵌套的
if/elif/else
语句或字典这是一个基于你的问题的例子,尽管我现在还不清楚你想要实现什么
PEP 634、PEP 635和PEP 636是尚未接受并随后实施的Python增强建议中的三个
这意味着它只是一个概念证明,请求者希望在未来看到它,但它尚未开发出来。此外,也没有人能保证这一点,政治公众人物更倾向于一厢情愿
相关问题 更多 >
编程相关推荐