]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-81263: Add assignment expressions to `help` (GH-124641) (#124713)
authorEmily Morehouse <emily@python.org>
Fri, 27 Sep 2024 22:21:58 +0000 (15:21 -0700)
committerGitHub <noreply@github.com>
Fri, 27 Sep 2024 22:21:58 +0000 (15:21 -0700)
gh-81263: Add assignment expressions to `help` (#124641)

* Add assignment expression (:=) to `help`

* Update index for Assignment Expressions to include pair of `assignment; expression`

Doc/reference/expressions.rst
Lib/pydoc.py
Lib/pydoc_data/topics.py

index f734221a2cdec556ad07898d485f18668c921a06..ab72ad49d041e14e1e7bb51f4b351b14f48e05cf 100644 (file)
@@ -1807,6 +1807,7 @@ returns a boolean value regardless of the type of its argument
    single: assignment expression
    single: walrus operator
    single: named expression
+   pair: assignment; expression
 
 Assignment expressions
 ======================
index 40ec650b39d4e701dc39439d8c9db8d22cb7c98c..30cd0b3fa3cb4eb5b5255d7f46a1ca5be4b72b1c 100755 (executable)
@@ -1861,6 +1861,7 @@ class Helper:
         ':': 'SLICINGS DICTIONARYLITERALS',
         '@': 'def class',
         '\\': 'STRINGS',
+        ':=': 'ASSIGNMENTEXPRESSIONS',
         '_': 'PRIVATENAMES',
         '__': 'PRIVATENAMES SPECIALMETHODS',
         '`': 'BACKQUOTES',
@@ -1954,6 +1955,7 @@ class Helper:
         'ASSERTION': 'assert',
         'ASSIGNMENT': ('assignment', 'AUGMENTEDASSIGNMENT'),
         'AUGMENTEDASSIGNMENT': ('augassign', 'NUMBERMETHODS'),
+        'ASSIGNMENTEXPRESSIONS': ('assignment-expressions', ''),
         'DELETION': 'del',
         'RETURNING': 'return',
         'IMPORTING': 'import',
index 2b253dcbbc3a385453d59edaea15bb225f777343..1d8c75df703798758c66cfbeb7501d37f95b9edc 100644 (file)
@@ -421,6 +421,34 @@ topics = {'assert': 'The "assert" statement\n'
                'some expressions (like un-parenthesized tuple expressions) '
                'caused a\n'
                'syntax error.\n',
+ 'assignment-expressions': 'Assignment expressions\n'
+          '**********************\n'
+          '\n'
+          'An assignment expression (sometimes also called a “named expression”'
+          '\nor “walrus”) assigns an expression to an identifier, while also\n'
+          'returning the value of the expression.\n'
+          '\n'
+          'One common use case is when handling matched regular expressions:\n'
+          '\n'
+          '   if matching := pattern.search(data):\n'
+          '      do_something(matching)\n'
+          '\n'
+          'Or, when processing a file stream in chunks:\n'
+          '\n'
+          '   while chunk := file.read(9000):\n'
+          '      process(chunk)\n'
+          '\n'
+          'Assignment expressions must be surrounded by parentheses when used as\n'
+          'expression statements and when used as sub-expressions in slicing,\n'
+          'conditional, lambda, keyword-argument, and comprehension-if\n'
+          'expressions and in assert, with, and assignment statements. In all\n'
+          'other places where they can be used, parentheses are not required,\n'
+          'including in if and while statements.\n'
+          '\n'
+          'Added in version 3.8.\n'
+          'See also:\n'
+          '\n'
+          '  **PEP 572** - Assignment Expressions\n',
  'async': 'Coroutines\n'
           '**********\n'
           '\n'