问题标签 [structural-pattern-matching]
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.
python - Python 结构模式匹配
我无法运行此代码:
match
我在 Python 中找不到关键字。
我在这里找到它:https ://www.python.org/dev/peps/pep-0622/#the-match-statement
任何想法?
python - 如何使用存储在变量中的值作为案例模式?
我试图理解 Python 3.10 中新的结构模式匹配语法。我知道可以匹配这样的文字值:
但是,如果我重构并将这些值移动到模块级变量,则会导致错误,因为这些语句现在表示结构或模式而不是值:
有没有办法使用 match 语句来匹配存储在变量中的值?
python - 将多个 isinstance 检查转换为结构模式匹配
我想将此现有代码转换为使用模式匹配:
您如何编写带有模式匹配的isinstance检查,以及如何同时针对多种可能的类型进行测试(float, Decimal)
?
python - 捕获使剩余模式无法访问
为什么此代码失败:
它生成此错误消息:
该错误消息是什么意思,如何修复代码以使其正常工作?
python - 避免结构模式匹配中的意外捕获
在使用模式匹配时,这个例子被讨论为可能的“陷阱”:
这是使用结构模式匹配意外捕获的示例。它给出了这个意外的输出:
同样的问题以其他形式出现:
在这个例子中,str
需要有括号,str()
. 没有它们,它会“捕获”并将str内置类型替换为x的值。
是否有一种防御性编程实践可以帮助避免这些问题并提供早期检测?
python - 有没有办法使用 python 的“匹配”语句来测试 Iterable 是否包含模式?
这与新的 Python 3.10 beta 和新match
语法有关。有没有办法检查一个模式是否简单地包含在一个迭代中?最明显的解决方案是简单地将两个通配符放在两边,但这会引发 aSyntaxError
由于来自可迭代解包的解包语法。
有没有办法做到这一点?注意:在示例中使用诸如包装类之类的东西numbers
会很好,只要它使用匹配块并且至少具有一定的可读性,但我已经尝试过这个并且没有太大的成功
例子:
python - 结构模式匹配 Python - 匹配集合 / Frozenset
我一直在玩 Python 3.10 中的结构模式匹配,但不知道如何让它匹配一个集合。例如我试过:
我试过了:
也:
我猜有一种方法可以做到这一点,因为我们可以匹配其他对象,而我只是缺少正确的语法,但我想不出还有什么可以尝试的。任何帮助,将不胜感激!谢谢!
python - 如果先前未定义变量,为什么匹配案例语句会分配给其中一种情况中使用的变量?
在学习 Python 10 中引入的模式匹配时,我遇到了一个示例,其中一部分拆分字符串被分配/绑定到其中一种情况下使用的变量。
第二种情况有先前未声明的变量cmd
,它最终被赋值"dir"
。