Skip to content

Commit 34bda0c

Browse files
committed
Match statement
1 parent d736e7a commit 34bda0c

File tree

3 files changed

+17
-19
lines changed

3 files changed

+17
-19
lines changed

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2171,6 +2171,9 @@ Operator
21712171
**Module of functions that provide the functionality of operators. Functions are ordered by operator precedence, starting with least binding.**
21722172
```python
21732173
import operator as op
2174+
```
2175+
2176+
```python
21742177
<bool> = op.not_(<obj>) # or, and, not (or/and missing)
21752178
<bool> = op.eq/ne/lt/ge/is_/is_not/contains(<obj>, <obj>) # ==, !=, <, >=, is, is not, in
21762179
<obj> = op.or_/xor/and_(<int/set>, <int/set>) # |, ^, &
@@ -2227,11 +2230,9 @@ match <object/expression>:
22272230
>>> from pathlib import Path
22282231
>>> match Path('/home/gto/python-cheatsheet/README.md'):
22292232
... case Path(
2230-
... parts=['/', 'home', user, *_],
2231-
... stem=stem,
2232-
... suffix=('.md' | '.txt') as suffix
2233-
... ) if stem.lower() == 'readme':
2234-
... print(f'{stem}{suffix} is a readme file that belongs to user {user}.')
2233+
... parts=['/', 'home', user, *_]
2234+
... ) as p if p.stem.lower() == 'readme' and p.suffix.lower() in ['.md', '.txt']:
2235+
... print(f'{p.name} is a readme file that belongs to user {user}.')
22352236
'README.md is a readme file that belongs to user gto.'
22362237
```
22372238

index.html

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1775,17 +1775,18 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
17751775
<li><strong>ProcessPoolExecutor provides true parallelism but: everything sent to/from workers must be <a href="#pickle">pickable</a>, queues must be sent using executor's 'initargs' and 'initializer' parameters, and executor should only be reachable via <code class="python hljs"><span class="hljs-string">'if __name__ == "__main__": ...'</span></code>.</strong></li>
17761776
</ul>
17771777
<div><h2 id="operator"><a href="#operator" name="operator">#</a>Operator</h2><p><strong>Module of functions that provide the functionality of operators. Functions are ordered by operator precedence, starting with least binding.</strong></p><pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> operator <span class="hljs-keyword">as</span> op
1778-
&lt;bool&gt; = op.not_(&lt;obj&gt;) <span class="hljs-comment"># or, and, not (or/and missing)</span>
1778+
</code></pre></div>
1779+
1780+
1781+
<pre><code class="python language-python hljs">&lt;bool&gt; = op.not_(&lt;obj&gt;) <span class="hljs-comment"># or, and, not (or/and missing)</span>
17791782
&lt;bool&gt; = op.eq/ne/lt/ge/is_/is_not/contains(&lt;obj&gt;, &lt;obj&gt;) <span class="hljs-comment"># ==, !=, &lt;, &gt;=, is, is not, in</span>
17801783
&lt;obj&gt; = op.or_/xor/and_(&lt;int/set&gt;, &lt;int/set&gt;) <span class="hljs-comment"># |, ^, &amp;</span>
17811784
&lt;int&gt; = op.lshift/rshift(&lt;int&gt;, &lt;int&gt;) <span class="hljs-comment"># &lt;&lt;, &gt;&gt;</span>
17821785
&lt;obj&gt; = op.add/sub/mul/truediv/floordiv/mod(&lt;obj&gt;, &lt;obj&gt;) <span class="hljs-comment"># +, -, *, /, //, %</span>
17831786
&lt;num&gt; = op.neg/invert(&lt;num&gt;) <span class="hljs-comment"># -, ~</span>
17841787
&lt;num&gt; = op.pow(&lt;num&gt;, &lt;num&gt;) <span class="hljs-comment"># **</span>
17851788
&lt;func&gt; = op.itemgetter/attrgetter/methodcaller(&lt;obj&gt; [, ...]) <span class="hljs-comment"># [index/key], .name, .name([…])</span>
1786-
</code></pre></div>
1787-
1788-
1789+
</code></pre>
17891790
<pre><code class="python language-python hljs">elementwise_sum = map(op.add, list_a, list_b)
17901791
sorted_by_second = sorted(&lt;coll.&gt;, key=op.itemgetter(<span class="hljs-number">1</span>))
17911792
sorted_by_both = sorted(&lt;coll.&gt;, key=op.itemgetter(<span class="hljs-number">1</span>, <span class="hljs-number">0</span>))
@@ -1825,11 +1826,9 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
18251826
<div><h3 id="example-2">Example</h3><pre><code class="python language-python hljs"><span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> pathlib <span class="hljs-keyword">import</span> Path
18261827
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">match</span> Path(<span class="hljs-string">'/home/gto/python-cheatsheet/README.md'</span>):
18271828
<span class="hljs-meta">... </span> <span class="hljs-keyword">case</span> Path(
1828-
<span class="hljs-meta">... </span> parts=[<span class="hljs-string">'/'</span>, <span class="hljs-string">'home'</span>, user, *_],
1829-
<span class="hljs-meta">... </span> stem=stem,
1830-
<span class="hljs-meta">... </span> suffix=(<span class="hljs-string">'.md'</span> | <span class="hljs-string">'.txt'</span>) <span class="hljs-keyword">as</span> suffix
1831-
<span class="hljs-meta">... </span> ) <span class="hljs-keyword">if</span> stem.lower() == <span class="hljs-string">'readme'</span>:
1832-
<span class="hljs-meta">... </span> print(<span class="hljs-string">f'<span class="hljs-subst">{stem}</span><span class="hljs-subst">{suffix}</span> is a readme file that belongs to user <span class="hljs-subst">{user}</span>.'</span>)
1829+
<span class="hljs-meta">... </span> parts=[<span class="hljs-string">'/'</span>, <span class="hljs-string">'home'</span>, user, *_]
1830+
<span class="hljs-meta">... </span> ) <span class="hljs-keyword">as</span> p <span class="hljs-keyword">if</span> p.stem.lower() == <span class="hljs-string">'readme'</span> <span class="hljs-keyword">and</span> p.suffix.lower() <span class="hljs-keyword">in</span> [<span class="hljs-string">'.md'</span>, <span class="hljs-string">'.txt'</span>]:
1831+
<span class="hljs-meta">... </span> print(<span class="hljs-string">f'<span class="hljs-subst">{p.name}</span> is a readme file that belongs to user <span class="hljs-subst">{user}</span>.'</span>)
18331832
<span class="hljs-string">'README.md is a readme file that belongs to user gto.'</span>
18341833
</code></pre></div>
18351834

parse.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,9 @@ const MATCH_EXAMPLE =
112112
'<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> pathlib <span class="hljs-keyword">import</span> Path\n' +
113113
'<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">match</span> Path(<span class="hljs-string">\'/home/gto/python-cheatsheet/README.md\'</span>):\n' +
114114
'<span class="hljs-meta">... </span> <span class="hljs-keyword">case</span> Path(\n' +
115-
'<span class="hljs-meta">... </span> parts=[<span class="hljs-string">\'/\'</span>, <span class="hljs-string">\'home\'</span>, user, *_],\n' +
116-
'<span class="hljs-meta">... </span> stem=stem,\n' +
117-
'<span class="hljs-meta">... </span> suffix=(<span class="hljs-string">\'.md\'</span> | <span class="hljs-string">\'.txt\'</span>) <span class="hljs-keyword">as</span> suffix\n' +
118-
'<span class="hljs-meta">... </span> ) <span class="hljs-keyword">if</span> stem.lower() == <span class="hljs-string">\'readme\'</span>:\n' +
119-
'<span class="hljs-meta">... </span> print(<span class="hljs-string">f\'<span class="hljs-subst">{stem}</span><span class="hljs-subst">{suffix}</span> is a readme file that belongs to user <span class="hljs-subst">{user}</span>.\'</span>)\n' +
115+
'<span class="hljs-meta">... </span> parts=[<span class="hljs-string">\'/\'</span>, <span class="hljs-string">\'home\'</span>, user, *_]\n' +
116+
'<span class="hljs-meta">... </span> ) <span class="hljs-keyword">as</span> p <span class="hljs-keyword">if</span> p.stem.lower() == <span class="hljs-string">\'readme\'</span> <span class="hljs-keyword">and</span> p.suffix.lower() <span class="hljs-keyword">in</span> [<span class="hljs-string">\'.md\'</span>, <span class="hljs-string">\'.txt\'</span>]:\n' +
117+
'<span class="hljs-meta">... </span> print(<span class="hljs-string">f\'<span class="hljs-subst">{p.name}</span> is a readme file that belongs to user <span class="hljs-subst">{user}</span>.\'</span>)\n' +
120118
'<span class="hljs-string">\'README.md is a readme file that belongs to user gto.\'</span>\n';
121119

122120
const COROUTINES =

0 commit comments

Comments
 (0)