|
479 | 479 | %
|
480 | 480 | \item \pythonilIdx{\_\_lt\_\_}\pythonIdx{dunder!\_\_lt\_\_} implements the functionality of~\pythonilIdx{<}.%
|
481 | 481 | %
|
482 |
| -\item \pythonilIdx{\_\_le\_\_}\pythonIdx{dunder!\_\_le\_\_} implements the functionality of~\pythonilIdx{<=}.% |
| 482 | +\item \pythonilIdx{\_\_le\_\_}\pythonIdx{dunder!\_\_le\_\_} implements the functionality of~\pythonil{<=}\pythonIdx{<=}.% |
483 | 483 | %
|
484 | 484 | \item \pythonilIdx{\_\_gt\_\_}\pythonIdx{dunder!\_\_gt\_\_} implements the functionality of~\pythonilIdx{>}.%
|
485 | 485 | %
|
486 |
| -\item \pythonilIdx{\_\_ge\_\_}\pythonIdx{dunder!\_\_ge\_\_} implements the functionality of~\pythonilIdx{>=}.% |
| 486 | +\item \pythonilIdx{\_\_ge\_\_}\pythonIdx{dunder!\_\_ge\_\_} implements the functionality of~\pythonil{>=}\pythonIdx{>=}.% |
487 | 487 | \end{itemize}%
|
488 | 488 | %
|
489 | 489 | Implementing equality and inequality is rather easy, since our fractions are all normalized.
|
|
1465 | 1465 | \begin{figure}%
|
1466 | 1466 | \renewcommand*\DTstylecomment{\relax}%
|
1467 | 1467 | \renewcommand*\DTstyle{\small}%
|
1468 |
| -\def\dunder#1{\expandafter\pythonilIdx{\_\_#1\_\_}\expandafter\pythonIdx{dunder!\_\_#1\_\_}}% |
1469 | 1468 | %
|
1470 | 1469 | \dirtree{%
|
1471 | 1470 | .1 \pythonilIdx{\_\_}.
|
|
1482 | 1481 | .2 Hashing.
|
1483 | 1482 | .3 \dunder{hash}\DTcomment{compute an integer value representing this object; \pythonil{hash(a)}~$\cong$~\pythonil{a.\_\_hash\_\_()}}.
|
1484 | 1483 | .2 Ordering and Equality.
|
1485 |
| -.3 \dunder{eq}\DTcomment{equality: \pythonil{a == b}~$\cong$~\pythonil{a.\_\_eq\_\_(b)}}. |
1486 |
| -.3 \dunder{ne}\DTcomment{inequality: \pythonil{a != b}~$\cong$~\pythonil{a.\_\_ne\_\_(b)}}. |
1487 |
| -.3 \dunder{lt}\DTcomment{less than: \pythonil{a < b}~$\cong$~\pythonil{a.\_\_lt\_\_(b)}}. |
1488 |
| -.3 \dunder{le}\DTcomment{less than or equal: \pythonil{a <= b}~$\cong$~\pythonil{a.\_\_le\_\_(b)}}. |
1489 |
| -.3 \dunder{gt}\DTcomment{greater than: \pythonil{a > b}~$\cong$~\pythonil{a.\_\_gt\_\_(b)}}. |
1490 |
| -.3 \dunder{ge}\DTcomment{greater than or equal: \pythonil{a >= b}~$\cong$~\pythonil{a.\_\_ge\_\_(b)}}. |
| 1484 | +.3 \dunder{eq}\DTcomment{equality: \pythonil{a == b}\pythonIdx{==}~$\cong$~\pythonil{a.\_\_eq\_\_(b)}}. |
| 1485 | +.3 \dunder{ne}\DTcomment{inequality: \pythonil{a != b}\pythonIdx{"!==}~$\cong$~\pythonil{a.\_\_ne\_\_(b)}}. |
| 1486 | +.3 \dunder{lt}\DTcomment{less than: \pythonil{a < b}\pythonIdx{<}~$\cong$~\pythonil{a.\_\_lt\_\_(b)}}. |
| 1487 | +.3 \dunder{le}\DTcomment{less than or equal: \pythonil{a <= b}\pythonIdx{<=}~$\cong$~\pythonil{a.\_\_le\_\_(b)}}. |
| 1488 | +.3 \dunder{gt}\DTcomment{greater than: \pythonil{a > b}\pythonIdx{>}~$\cong$~\pythonil{a.\_\_gt\_\_(b)}}. |
| 1489 | +.3 \dunder{ge}\DTcomment{greater than or equal: \pythonil{a >= b}\pythonIdx{>=}~$\cong$~\pythonil{a.\_\_ge\_\_(b)}}. |
1491 | 1490 | .2 Context Managers.
|
1492 | 1491 | .3 \dunder{enter}\DTcomment{enter a \pythonil{with a as x}\pythonIdx{with} statement, returns the value~\pythonil{x} given to \pythonilIdx{as}}.
|
1493 | 1492 | .3 \dunder{exit}\DTcomment{leave a \pythonilIdx{with} statement, receive exception information, returns~\pythonil{False} to re-raise caught exceptions, if any}.
|
|
1500 | 1499 | .3 \dunder{delitem}\DTcomment{delete element at index/key; \pythonil{del a[x]}\pythonIdx{del}~$\cong$~\pythonil{a.\_\_detitem\_\_(x)}}.
|
1501 | 1500 | .3 \dunder{reversed}\DTcomment{iterate backwards; \pythonil{reverse(a)}~$\cong$~\pythonil{a.\_\_reversed\_\_()}}.
|
1502 | 1501 | .3 \dunder{next}\DTcomment{get next element from iterator; \pythonil{next(i)}~$\cong$~\pythonil{i.\_\_next\_\_()}}.
|
| 1502 | +.2 Classes. |
| 1503 | +.3 \dunder{new}\DTcomment{create a new instance of a class: \pythonil{cls(a, b=c)}~$\cong$~\pythonil{T.\_\_new\_\_(cls, a, b=c)}, is then followed by~\pythonil{cls.\_\_init\_\_(a, b=c)}}. |
| 1504 | +.3 \dunder{init}\DTcomment{initialize an object: \pythonil{cls(a, b=c)}~$\cong$~\pythonil{cls.\_\_init\_\_(a, b=c)}}. |
| 1505 | +.3 \dunder{call}\DTcomment{call an object like a function: \pythonil{a(b, c=d)}~$\cong$~\pythonil{a.\_\_call\_\_(b, c=d)}}. |
1503 | 1506 | }%
|
1504 | 1507 | %
|
1505 | 1508 | \caption{An overview of the dunder in \python\ (Part~1).}%
|
|
1509 | 1512 | \begin{figure}%
|
1510 | 1513 | \renewcommand*\DTstylecomment{\relax}%
|
1511 | 1514 | \renewcommand*\DTstyle{\small}%
|
1512 |
| -\def\dunder#1{\expandafter\pythonilIdx{\_\_#1\_\_}\expandafter\pythonIdx{dunder!\_\_#1\_\_}}% |
1513 | 1515 | %
|
1514 | 1516 | \dirtree{%
|
1515 | 1517 | .1 \pythonilIdx{\_\_}.
|
1516 | 1518 | .2 Arithmetics.
|
1517 |
| -.3 \dunder{abs}\DTcomment{abs: \pythonil{abs(a)}\pythonIdx{abs}~$\cong$~\pythonil{a.\_\_abs\_\_()}}. |
| 1519 | +.3 \dunder{abs}\DTcomment{absolute value: \pythonil{abs(a)}\pythonIdx{abs}~$\cong$~\pythonil{a.\_\_abs\_\_()}}. |
| 1520 | +.3 \dunder{minus}\DTcomment{negate: \pythonil{-a}\pythonIdx{-}~$\cong$~\pythonil{a.\_\_minus\_\_()}}. |
| 1521 | +.3 \dunder{pos}\DTcomment{positive: \pythonil{+a}\pythonIdx{+}~$\cong$~\pythonil{a.\_\_pos\_\_()}}. |
| 1522 | +.3 \dunder{invert}\DTcomment{invert: \pythonil{\~a}\pythonIdx{\texttildelow}~$\cong$~\pythonil{a.\_\_invert\_\_()}}. |
1518 | 1523 | .3 \dunder{add}\DTcomment{add: \pythonil{a + b}\pythonIdx{+}~$\cong$~\pythonil{a.\_\_add\_\_(b)}}.
|
1519 | 1524 | .3 \dunder{radd}\DTcomment{right-add: \pythonil{a + b}\pythonIdx{+}~$\cong$~\pythonil{b.\_\_radd\_\_(a)}, if \pythonil{a.\_\_add\_\_(b)} yields~\pythonilIdx{NotImplemented}}.
|
1520 | 1525 | .3 \dunder{sub}\DTcomment{subtract: \pythonil{a - b}\pythonIdx{-}~$\cong$~\pythonil{a.\_\_sub\_\_(b)}}.
|
1521 | 1526 | .3 \dunder{rsub}\DTcomment{right-subtract: \pythonil{a - b}\pythonIdx{-}~$\cong$~\pythonil{b.\_\_rsub\_\_(a)}, if \pythonil{a.\_\_sub\_\_(b)} yields~\pythonilIdx{NotImplemented}}.
|
1522 | 1527 | .3 \dunder{mul}\DTcomment{multiply: \pythonil{a * b}\pythonIdx{*}~$\cong$~\pythonil{a.\_\_mul\_\_(b)}}.
|
1523 | 1528 | .3 \dunder{rmul}\DTcomment{right-multiply: \pythonil{a * b}\pythonIdx{*}~$\cong$~\pythonil{b.\_\_rmul\_\_(a)}, if \pythonil{a.\_\_mul\_\_(b)} yields~\pythonilIdx{NotImplemented}}.
|
1524 | 1529 | .3 \dunder{truediv}\DTcomment{divide: \pythonil{a / b}\pythonIdx{/}~$\cong$~\pythonil{a.\_\_truediv\_\_(b)}}.
|
1525 |
| -.3 \dunder{rtruediv}\DTcomment{right-divide: \pythonil{a / b}\pythonIdx{/} $\equiv$ \pythonil{b.\_\_rtruediv\_\_(a)}, if \pythonil{a.\_\_truediv\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
1526 |
| -.3 \dunder{mod}\DTcomment{modulo-divide: \pythonil{a \% b}\pythonIdx{\%} $\equiv$ \pythonil{a.\_\_mod\_\_(b)}}. |
1527 |
| -.3 \dunder{rmod}\DTcomment{right-modulo-divide: \pythonil{a \% b}\pythonIdx{\%} $\equiv$ \pythonil{b.\_\_rmod\_\_(a)}, if \pythonil{a.\_\_mod\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
1528 |
| -.3 \dunder{floordiv}\DTcomment{integer-divide: \pythonil{a // b}\pythonIdx{//} $\equiv$ \pythonil{a.\_\_floordiv\_\_(b)}}. |
1529 |
| -.3 \dunder{rfloordiv}\DTcomment{right-integer-divide: \pythonil{a // b}\pythonIdx{//} $\equiv$ \pythonil{b.\_\_rfloordiv\_\_(a)}, if \pythonil{a.\_\_floordiv\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
1530 |
| -.3 \dunder{pow}\DTcomment{exponential: \pythonil{a ** b}\pythonIdx{**} $\equiv$ \pythonil{a.\_\_pow\_\_(b)}}. |
1531 |
| -.3 \dunder{rpow}\DTcomment{right-exponential: \pythonil{a ** b}\pythonIdx{**} $\equiv$ \pythonil{b.\_\_rpow\_\_(a)}, if \pythonil{a.\_\_pow\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
1532 |
| -.3 \dunder{matmul}\DTcomment{matrix-multiply: \pythonil{a @ b}\pythonIdx{@} $\equiv$ \pythonil{a.\_\_matmul\_\_(b)}}. |
1533 |
| -.3 \dunder{rmatmul}\DTcomment{right-matrix-multiply: \pythonil{a @ b}\pythonIdx{@} $\equiv$ \pythonil{b.\_\_rmatmul\_\_(a)}, if \pythonil{a.\_\_matmul\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
| 1530 | +.3 \dunder{rtruediv}\DTcomment{right-divide: \pythonil{a / b}\pythonIdx{/}~$\cong$~\pythonil{b.\_\_rtruediv\_\_(a)}, if \pythonil{a.\_\_truediv\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
| 1531 | +.3 \dunder{mod}\DTcomment{modulo-divide: \pythonil{a \% b}\pythonIdx{\%}~$\cong$~\pythonil{a.\_\_mod\_\_(b)}}. |
| 1532 | +.3 \dunder{rmod}\DTcomment{right-modulo-divide: \pythonil{a \% b}\pythonIdx{\%}~$\cong$~\pythonil{b.\_\_rmod\_\_(a)}, if \pythonil{a.\_\_mod\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
| 1533 | +.3 \dunder{floordiv}\DTcomment{integer-divide: \pythonil{a // b}\pythonIdx{//}~$\cong$~\pythonil{a.\_\_floordiv\_\_(b)}}. |
| 1534 | +.3 \dunder{rfloordiv}\DTcomment{right-integer-divide: \pythonil{a // b}\pythonIdx{//}~$\cong$~\pythonil{b.\_\_rfloordiv\_\_(a)}, if \pythonil{a.\_\_floordiv\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
| 1535 | +.3 \dunder{pow}\DTcomment{exponential: \pythonil{a ** b}\pythonIdx{**}~$\cong$~\pythonil{a.\_\_pow\_\_(b)}}. |
| 1536 | +.3 \dunder{rpow}\DTcomment{right-exponential: \pythonil{a ** b}\pythonIdx{**}~$\cong$~\pythonil{b.\_\_rpow\_\_(a)}, if \pythonil{a.\_\_pow\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
| 1537 | +.3 \dunder{matmul}\DTcomment{matrix-multiply: \pythonil{a @ b}\pythonIdx{@}~$\cong$~\pythonil{a.\_\_matmul\_\_(b)}}. |
| 1538 | +.3 \dunder{rmatmul}\DTcomment{right-matrix-multiply: \pythonil{a @ b}\pythonIdx{@}~$\cong$~\pythonil{b.\_\_rmatmul\_\_(a)}, if \pythonil{a.\_\_matmul\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
| 1539 | +.3 \dunder{divmod}\DTcomment{compute the result of an integer division as well as the remainder and return them as 2-tuple: \pythonil{divmod(a, b)}\pythonIdx{divmod}~$\cong$~\pythonil{a.\_\_divmod\_\_(b)}}. |
| 1540 | +.3 \dunder{rdivmod}\DTcomment{right-sided \pythonilIdx{divmod}: \pythonil{divmod(a, b)}\pythonIdx{divmod}~$\cong$~\pythonil{b.\_\_divmod\_\_(a)}, if \pythonil{a.\_\_divmod\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
| 1541 | +.3 \dunder{round}\DTcomment{round: \pythonil{round(a)}\pythonIdx{round}~$\cong$~\pythonil{a.\_\_round\_\_()}}. |
| 1542 | +.3 \dunder{trunc}\DTcomment{truncated to integer: \pythonil{math.trunc(a)}\pythonIdx{trunc}\pythonIdx{math!trunc}~$\cong$~\pythonil{a.\_\_trunc\_\_()}}. |
| 1543 | +.3 \dunder{floor}\DTcomment{round towards~$-\infty$: \pythonil{math.floor(a)}\pythonIdx{floor}\pythonIdx{math!floor}~$\cong$~\pythonil{a.\_\_floor\_\_()}}. |
| 1544 | +.3 \dunder{ceil}\DTcomment{round towards~$+\infty$: \pythonil{math.ceil(a)}\pythonIdx{ceil}\pythonIdx{math!ceil}~$\cong$~\pythonil{a.\_\_ceil\_\_()}}. |
1534 | 1545 | .2 In-Place Arithmetics.
|
1535 |
| -.3 \dunder{iadd}\DTcomment{in-place addition: \pythonil{a += b}\pythonIdx{+=} $\equiv$ \pythonil{a.\_\_iadd\_\_(b)}, returns~\pythonilIdx{self}}. |
1536 |
| -.3 \dunder{isub}\DTcomment{in-place subtraction: \pythonil{a -= b}\pythonIdx{-=} $\equiv$ \pythonil{a.\_\_isub\_\_(b)}, returns~\pythonilIdx{self}}. |
1537 |
| -.3 \dunder{imul}\DTcomment{in-place multiplication: \pythonil{a *= b}\pythonIdx{*=} $\equiv$ \pythonil{a.\_\_imul\_\_(b)}, returns~\pythonilIdx{self}}. |
1538 |
| -.3 \dunder{itruediv}\DTcomment{in-place division: \pythonil{a /= b}\pythonIdx{/=} $\equiv$ \pythonil{a.\_\_itruediv\_\_(b)}, returns~\pythonilIdx{self}}. |
1539 |
| -.3 \dunder{imod}\DTcomment{in-place modulo division: \pythonil{a \%= b}\pythonIdx{\%=} $\equiv$ \pythonil{a.\_\_imod\_\_(b)}, returns~\pythonilIdx{self}}. |
1540 |
| -.3 \dunder{ifloordiv}\DTcomment{in-place integer division: \pythonil{a //= b}\pythonIdx{//=} $\equiv$ \pythonil{a.\_\_ifloordiv\_\_(b)}, returns~\pythonilIdx{self}}. |
1541 |
| -.3 \dunder{ipow}\DTcomment{in-place exponentiation: \pythonil{a **= b}\pythonIdx{**=} $\equiv$ \pythonil{a.\_\_ipow\_\_(b)}, returns~\pythonilIdx{self}}. |
1542 |
| -.3 \dunder{imatmul}\DTcomment{in-place matrix multiplication: \pythonil{a @= b}\pythonIdx{@=} $\equiv$ \pythonil{a.\_\_imatmul\_\_(b)}, returns~\pythonilIdx{self}}. |
| 1546 | +.3 \dunder{iadd}\DTcomment{in-place addition: \pythonil{a += b}\pythonIdx{+=}~$\cong$~\pythonil{a.\_\_iadd\_\_(b)}, returns~\pythonilIdx{self}}. |
| 1547 | +.3 \dunder{isub}\DTcomment{in-place subtraction: \pythonil{a -= b}\pythonIdx{-=}~$\cong$~\pythonil{a.\_\_isub\_\_(b)}, returns~\pythonilIdx{self}}. |
| 1548 | +.3 \dunder{imul}\DTcomment{in-place multiplication: \pythonil{a *= b}\pythonIdx{*=}~$\cong$~\pythonil{a.\_\_imul\_\_(b)}, returns~\pythonilIdx{self}}. |
| 1549 | +.3 \dunder{itruediv}\DTcomment{in-place division: \pythonil{a /= b}\pythonIdx{/=}~$\cong$~\pythonil{a.\_\_itruediv\_\_(b)}, returns~\pythonilIdx{self}}. |
| 1550 | +.3 \dunder{imod}\DTcomment{in-place modulo division: \pythonil{a \%= b}\pythonIdx{\%=}~$\cong$~\pythonil{a.\_\_imod\_\_(b)}, returns~\pythonilIdx{self}}. |
| 1551 | +.3 \dunder{ifloordiv}\DTcomment{in-place integer division: \pythonil{a //= b}\pythonIdx{//=}~$\cong$~\pythonil{a.\_\_ifloordiv\_\_(b)}, returns~\pythonilIdx{self}}. |
| 1552 | +.3 \dunder{ipow}\DTcomment{in-place exponentiation: \pythonil{a **= b}\pythonIdx{**=}~$\cong$~\pythonil{a.\_\_ipow\_\_(b)}, returns~\pythonilIdx{self}}. |
| 1553 | +.3 \dunder{imatmul}\DTcomment{in-place matrix multiplication: \pythonil{a @= b}\pythonIdx{@=}~$\cong$~\pythonil{a.\_\_imatmul\_\_(b)}, returns~\pythonilIdx{self}}. |
1543 | 1554 | }%
|
1544 | 1555 | %
|
1545 | 1556 | \caption{An overview of the dunder in \python\ (Part~2).}%
|
1546 | 1557 | \label{fig:pythonDunder:2}%
|
1547 | 1558 | \end{figure}%
|
1548 | 1559 | %
|
| 1560 | +\begin{figure}% |
| 1561 | +\let\myoldstrut\strut% |
| 1562 | +\renewcommand*\DTstylecomment{\relax}% |
| 1563 | +\renewcommand*\DTstyle{\small}% |
| 1564 | +% |
| 1565 | +\dirtree{% |
| 1566 | +.1 \pythonilIdx{\_\_}. |
| 1567 | +.2 Logical or Binary Operators. |
| 1568 | +.3 \dunder{and}\DTcomment{and: \pythonil{a & b}\pythonIdx{\&}~$\cong$~\pythonil{a.\_\_and\_\_(b)}}. |
| 1569 | +.3 \dunder{rand}\DTcomment{and: \pythonil{a & b}\pythonIdx{\&}~$\cong$~\pythonil{b.\_\_rand\_\_(b)}, if \pythonil{a.\_\_and\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
| 1570 | +.3 \dunder{or}\DTcomment{or: \pythonil{a | b}\pythonIdx{\textbar}~$\cong$~\pythonil{a.\_\_or\_\_(b)}}. |
| 1571 | +.3 \dunder{ror}\DTcomment{or: \pythonil{a | b}\pythonIdx{\textbar}~$\cong$~\pythonil{b.\_\_ror\_\_(b)}, if \pythonil{a.\_\_or\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
| 1572 | +.3 \dunder{xor}\DTcomment{exclusive or: \pythonil{a \^ b}\pythonIdx{\textasciicircum}~$\cong$~\pythonil{a.\_\_xor\_\_(b)}}. |
| 1573 | +.3 \dunder{rxor}\DTcomment{exclusive or: \pythonil{a \^ b}\pythonIdx{\textasciicircum}~$\cong$~\pythonil{b.\_\_rxor\_\_(b)}, if \pythonil{a.\_\_xor\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
| 1574 | +.3 \dunder{rshift}\DTcomment{shift right: \pythonil{a >> b}\pythonIdx{>\myoldstrut>}~$\cong$~\pythonil{a.\_\_rshift\_\_(b)}}. |
| 1575 | +.3 \dunder{rrshift}\DTcomment{shift right: \pythonil{a >> b}\pythonIdx{>\myoldstrut>}~$\cong$~\pythonil{b.\_\_rrshift\_\_(b)}, if \pythonil{a.\_\_rshift\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
| 1576 | +.3 \dunder{lshift}\DTcomment{shift left: \pythonil{a << b}\pythonIdx{<\myoldstrut<}~$\cong$~\pythonil{a.\_\_lshift\_\_(b)}}. |
| 1577 | +.3 \dunder{rlshift}\DTcomment{shift left: \pythonil{a << b}\pythonIdx{<\myoldstrut<}~$\cong$~\pythonil{b.\_\_rlshift\_\_(b)}, if \pythonil{a.\_\_lshift\_\_(b)} yields~\pythonilIdx{NotImplemented}}. |
| 1578 | +.2 In-Place Logical or Binary Operators. |
| 1579 | +.3 \dunder{iand}\DTcomment{and: \pythonil{a &= b}\pythonIdx{\&=}~$\cong$~\pythonil{a.\_\_iand\_\_(b)}, returns~\pythonilIdx{self}}. |
| 1580 | +.3 \dunder{ior}\DTcomment{or: \pythonil{a |= b}\pythonIdx{\textbar=}~$\cong$~\pythonil{a.\_\_ior\_\_(b)}, returns~\pythonilIdx{self}}. |
| 1581 | +.3 \dunder{ixor}\DTcomment{exclusive or: \pythonil{a \^= b}\pythonIdx{\textasciicircum=}~$\cong$~\pythonil{a.\_\_ixor\_\_(b)}, returns~\pythonilIdx{self}}. |
| 1582 | +.3 \dunder{irshift}\DTcomment{shift right: \pythonil{a >>= b}\pythonIdx{>\myoldstrut>\myoldstrut=}~$\cong$~\pythonil{a.\_\_irshift\_\_(b)}, returns~\pythonilIdx{self}}. |
| 1583 | +.3 \dunder{ilshift}\DTcomment{shift left: \pythonil{a <<= b}\pythonIdx{<\myoldstrut<\myoldstrut=}~$\cong$~\pythonil{a.\_\_ilshift\_\_(b)}, returns~\pythonilIdx{self}}. |
| 1584 | +}% |
| 1585 | +% |
| 1586 | +\caption{An overview of the dunder in \python\ (Part~3).}% |
| 1587 | +\label{fig:pythonDunder:3}% |
| 1588 | +\end{figure}% |
| 1589 | +% |
1549 | 1590 | \FloatBarrier%
|
1550 | 1591 | \endhsection%
|
1551 | 1592 | %
|
|
0 commit comments