summaryrefslogtreecommitdiff
path: root/docs/differences
diff options
context:
space:
mode:
Diffstat (limited to 'docs/differences')
-rw-r--r--docs/differences/modules_preamble.txt33
1 files changed, 33 insertions, 0 deletions
diff --git a/docs/differences/modules_preamble.txt b/docs/differences/modules_preamble.txt
new file mode 100644
index 000000000..1958f0084
--- /dev/null
+++ b/docs/differences/modules_preamble.txt
@@ -0,0 +1,33 @@
+.. Preamble section inserted into generated output
+
+Positional-only Parameters
+--------------------------
+
+To save code size, many functions that accept keyword arguments in CPython only accept positional arguments in MicroPython.
+
+MicroPython marks positional-only parameters in the same way as CPython, by inserting a ``/`` to mark the end of the positional parameters. Any function whose signature ends in ``/`` takes *only* positional arguments. For more details, see `PEP 570 <https://peps.python.org/pep-0570/>`_.
+
+Example
+~~~~~~~
+
+For example, in CPython 3.4 this is the signature of the constructor ``socket.socket``::
+
+ socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
+
+However, the signature documented in :func:`MicroPython<socket.socket>` is::
+
+ socket(af=AF_INET, type=SOCK_STREAM, proto=IPPROTO_TCP, /)
+
+The ``/`` at the end of the parameters indicates that they are all positional-only in MicroPython. The following code works in CPython but not in most MicroPython ports::
+
+ import socket
+ s = socket.socket(type=socket.SOCK_DGRAM)
+
+MicroPython will raise an exception::
+
+ TypeError: function doesn't take keyword arguments
+
+The following code will work in both CPython and MicroPython::
+
+ import socket
+ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)