|
56 | 56 |
|
57 | 57 | <body> |
58 | 58 | <header> |
59 | | - <aside>March 8, 2025</aside> |
| 59 | + <aside>March 9, 2025</aside> |
60 | 60 | <a href="https://gto76.github.io" rel="author">Jure Šorn</a> |
61 | 61 | </header> |
62 | 62 |
|
|
847 | 847 | <div><h4 id="expressionsthatcallthereprmethod">Expressions that call the repr() method:</h4><pre><code class="python language-python hljs">print/str/repr([<obj>]) |
848 | 848 | print/str/repr({<obj>: <obj>}) |
849 | 849 | <span class="hljs-string">f'<span class="hljs-subst">{<obj>!r}</span>'</span> |
850 | | -Z = dataclasses.make_dataclass(<span class="hljs-string">'Z'</span>, [<span class="hljs-string">'a'</span>]); print/str/repr(Z(<obj>)) |
| 850 | +Z = make_dataclass(<span class="hljs-string">'Z'</span>, [<span class="hljs-string">'a'</span>]); print/str/repr(Z(<obj>)) |
851 | 851 | <span class="hljs-meta">>>> </span><obj> |
852 | 852 | </code></pre></div> |
853 | 853 |
|
|
875 | 875 | <li><strong>Hints are used by type checkers like <a href="https://pypi.org/project/mypy/">mypy</a>, data validation libraries such as <a href="https://pypi.org/project/pydantic/">Pydantic</a> and lately also by <a href="https://pypi.org/project/Cython/">Cython</a> compiler. However, they are not enforced by CPython interpreter.</strong></li> |
876 | 876 | </ul><pre><code class="python language-python hljs"><span class="hljs-keyword">from</span> collections <span class="hljs-keyword">import</span> abc |
877 | 877 |
|
878 | | -<name>: <type> [| ...] [= <obj>] <span class="hljs-comment"># `|` since 3.10.</span> |
879 | | -<name>: list/set/abc.Iterable/abc.Sequence[<type>] [= <obj>] <span class="hljs-comment"># Since 3.9.</span> |
880 | | -<name>: dict/tuple[<type>, ...] [= <obj>] <span class="hljs-comment"># Since 3.9.</span> |
| 878 | +<name>: <type> [| ...] [= <obj>] |
| 879 | +<name>: list/set/abc.Iterable/abc.Sequence[<type>] [= <obj>] |
| 880 | +<name>: dict/tuple[<type>, ...] [= <obj>] |
881 | 881 | </code></pre></div> |
882 | 882 |
|
883 | 883 |
|
|
897 | 897 | <li><strong>Function field() is needed because <code class="python hljs"><span class="hljs-string">'<attr_name>: list = []'</span></code> would make a list that is shared among all instances. Its 'default_factory' argument can be any <a href="#callable">callable</a>.</strong></li> |
898 | 898 | <li><strong>For attributes of arbitrary type use <code class="python hljs"><span class="hljs-string">'typing.Any'</span></code>.</strong></li> |
899 | 899 | </ul> |
900 | | -<pre><code class="python language-python hljs">Point = make_dataclass(<span class="hljs-string">'Point'</span>, [<span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>]) |
901 | | -Point = make_dataclass(<span class="hljs-string">'Point'</span>, [(<span class="hljs-string">'x'</span>, float), (<span class="hljs-string">'y'</span>, float)]) |
902 | | -Point = make_dataclass(<span class="hljs-string">'Point'</span>, [(<span class="hljs-string">'x'</span>, float, <span class="hljs-number">0</span>), (<span class="hljs-string">'y'</span>, float, <span class="hljs-number">0</span>)]) |
| 900 | +<pre><code class="python language-python hljs">P = make_dataclass(<span class="hljs-string">'P'</span>, [<span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>]) |
| 901 | +P = make_dataclass(<span class="hljs-string">'P'</span>, [(<span class="hljs-string">'x'</span>, float), (<span class="hljs-string">'y'</span>, float)]) |
| 902 | +P = make_dataclass(<span class="hljs-string">'P'</span>, [(<span class="hljs-string">'x'</span>, float, <span class="hljs-number">0</span>), (<span class="hljs-string">'y'</span>, float, <span class="hljs-number">0</span>)]) |
903 | 903 | </code></pre> |
904 | 904 | <div><h3 id="property">Property</h3><p><strong>Pythonic way of implementing getters and setters.</strong></p><pre><code class="python language-python hljs"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Person</span>:</span> |
905 | 905 | <span class="hljs-meta"> @property</span> |
@@ -2803,7 +2803,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment |
2803 | 2803 | </code></pre> |
2804 | 2804 | <div><h4 id="displaysalinechartoftotalcoronavirusdeathspermilliongroupedbycontinent">Displays a line chart of total coronavirus deaths per million grouped by continent:</h4><p></p><div id="2a950764-39fc-416d-97fe-0a6226a3095f" class="plotly-graph-div" style="height:312px; width:914px;"></div><pre><code class="python language-python hljs">covid = pd.read_csv(<span class="hljs-string">'https://raw.githubusercontent.com/owid/covid-19-data/8dde8ca49b'</span> |
2805 | 2805 | <span class="hljs-string">'6e648c17dd420b2726ca0779402651/public/data/owid-covid-data.csv'</span>, |
2806 | | - usecols=[<span class="hljs-string">'iso_code'</span>, <span class="hljs-string">'date'</span>, <span class="hljs-string">'total_deaths'</span>, <span class="hljs-string">'population'</span>]) |
| 2806 | + usecols=[<span class="hljs-string">'iso_code'</span>, <span class="hljs-string">'date'</span>, <span class="hljs-string">'population'</span>, <span class="hljs-string">'total_deaths'</span>]) |
2807 | 2807 | continents = pd.read_csv(<span class="hljs-string">'https://gto76.github.io/python-cheatsheet/web/continents.csv'</span>, |
2808 | 2808 | usecols=[<span class="hljs-string">'Three_Letter_Country_Code'</span>, <span class="hljs-string">'Continent_Name'</span>]) |
2809 | 2809 | df = pd.merge(covid, continents, left_on=<span class="hljs-string">'iso_code'</span>, right_on=<span class="hljs-string">'Three_Letter_Country_Code'</span>) |
@@ -2842,7 +2842,8 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment |
2842 | 2842 | driver.get(url + <span class="hljs-string">'?period1=1579651200&period2=9999999999'</span>) |
2843 | 2843 | <span class="hljs-keyword">if</span> buttons := driver.find_elements(<span class="hljs-string">'xpath'</span>, <span class="hljs-string">'//button[@name="reject"]'</span>): |
2844 | 2844 | buttons[<span class="hljs-number">0</span>].click() |
2845 | | - dataframes = pd.read_html(io.StringIO(driver.page_source), parse_dates=[<span class="hljs-string">'Date'</span>]) |
| 2845 | + html = io.StringIO(driver.page_source) |
| 2846 | + dataframes = pd.read_html(html, parse_dates=[<span class="hljs-string">'Date'</span>]) |
2846 | 2847 | s = dataframes[<span class="hljs-number">0</span>].set_index(<span class="hljs-string">'Date'</span>).Open |
2847 | 2848 | <span class="hljs-keyword">return</span> s.rename(name) |
2848 | 2849 |
|
@@ -2943,7 +2944,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment |
2943 | 2944 |
|
2944 | 2945 |
|
2945 | 2946 | <footer> |
2946 | | - <aside>March 8, 2025</aside> |
| 2947 | + <aside>March 9, 2025</aside> |
2947 | 2948 | <a href="https://gto76.github.io" rel="author">Jure Šorn</a> |
2948 | 2949 | </footer> |
2949 | 2950 |
|
|
0 commit comments