问题标签 [python-3.10]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2109 浏览

python - Python 结构模式匹配

我无法运行此代码:

match我在 Python 中找不到关键字。

我在这里找到它:https ://www.python.org/dev/peps/pep-0622/#the-match-statement

任何想法?

0 投票
5 回答
7094 浏览

python - 如何使用存储在变量中的值作为案例模式?

我试图理解 Python 3.10 中新的结构模式匹配语法。我知道可以匹配这样的文字值:

但是,如果我重构并将这些值移动到模块级变量,则会导致错误,因为这些语句现在表示结构或模式而不是值:

有没有办法使用 match 语句来匹配存储在变量中的值?

0 投票
1 回答
89 浏览

python - 如何在 Python 案例中引用变量

Python 能够将与文字集或占位符进行匹配,如下所示:

但是,如果我们有一个名为的变量another_fruit,并且我们希望与该变量的值完全匹配,而不是分配一个具有相同名称的占位符,该怎么办?有什么特殊的语法吗?

0 投票
2 回答
938 浏览

python-3.x - 带有常量的 Python 3.10 匹配/大小写

match/case我试图用Python 3.10中的较短的代码块替换 if/elif/elif/.../else 代码块。我定义了三个常量,并希望为每个常量做一些不同的事情,所以我的代码大致如下所示:

但是,在运行这段代码时,会出现异常:

我究竟做错了什么?

0 投票
1 回答
81 浏览

python - 如何用结构模式匹配表达 hasattr() 鸭子类型逻辑?

我有通过查找属性来检查命名元组数据类的代码:_fields

如何使用 Python 3.10 的匹配/大小写结构模式匹配来表达这一点?

0 投票
1 回答
753 浏览

python - 将多个 isinstance 检查转换为结构模式匹配

我想将此现有代码转换为使用模式匹配:

您如何编写带有模式匹配的isinstance检查,以及如何同时针对多种可能的类型进行测试(float, Decimal)

0 投票
1 回答
1031 浏览

python - 捕获使剩余模式无法访问

为什么此代码失败:

它生成此错误消息:

该错误消息是什么意思,如何修复代码以使其正常工作?

0 投票
1 回答
60 浏览

python - 如何将模式匹配用于针对 JSON 或 JSON 行的 SQL 样式查询

JSONJSON 行形式的数据开始,我想使用结构模式匹配对其运行查询。

例如,运行 json.load() 后,我得到一个结构如下的字典:

我想要做的是应用 Python 3.10 的结构模式匹配提取相关数据,就像使用这个 SQL 查询一样:

0 投票
1 回答
154 浏览

python - 避免结构模式匹配中的意外捕获

在使用模式匹配时,这个例子被讨论为可能的“陷阱”:

这是使用结构模式匹配意外捕获的示例。它给出了这个意外的输出:

同样的问题以其他形式出现:

在这个例子中,str需要有括号,str(). 没有它们,它会“捕获”并将str内置类型替换为x的值。

是否有一种防御性编程实践可以帮助避免这些问题并提供早期检测?

0 投票
0 回答
347 浏览

python - 在 Python 3.10 中继承联合类型

假设我们创建了一个在Python 3.10中调用的通用Union类型ResultData

请注意,在这种情况下,我使用的是新的 Python 3.10 Union 语法

然后当试图继承类以添加一些方法(比如来自 Monad 的方法)时,问题就来了:

通过声明这个类,它会抛出以下错误:

似乎 Union 类型继承自以下两个类:_SpecialForm_GenericAlias.

_GenericAlias有 4 个参数作为构造函数,而_SpecialForm只有两个。我的猜测_SpecialForm构造函数是使用_GenericAlias构造函数调用的,因此会导致错误。

我尝试使用以下代码解决此问题:

但是我仍然遇到同样的错误。