From 8f130536926a30237b5297780d61ef4232e88577 Mon Sep 17 00:00:00 2001 From: Brandt Bucher Date: Sat, 7 Mar 2020 10:23:49 -0800 Subject: bpo-39702: Update the Language Reference (PEP 614) (GH-18802) --- Doc/reference/compound_stmts.rst | 12 +++++++++++- Doc/whatsnew/3.9.rst | 4 ++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst index ac2065b..c14e7c7 100644 --- a/Doc/reference/compound_stmts.rst +++ b/Doc/reference/compound_stmts.rst @@ -507,7 +507,7 @@ A function definition defines a user-defined function object (see section funcdef: [`decorators`] "def" `funcname` "(" [`parameter_list`] ")" : ["->" `expression`] ":" `suite` decorators: `decorator`+ - decorator: "@" `dotted_name` ["(" [`argument_list` [","]] ")"] NEWLINE + decorator: "@" `assignment_expression` NEWLINE dotted_name: `identifier` ("." `identifier`)* parameter_list: `defparameter` ("," `defparameter`)* "," "/" ["," [`parameter_list_no_posonly`]] : | `parameter_list_no_posonly` @@ -550,6 +550,11 @@ is roughly equivalent to :: except that the original function is not temporarily bound to the name ``func``. +.. versionchanged:: 3.9 + Functions may be decorated with any valid :token:`assignment_expression`. + Previously, the grammar was much more restrictive; see :pep:`614` for + details. + .. index:: triple: default; parameter; value single: argument; function definition @@ -717,6 +722,11 @@ is roughly equivalent to :: The evaluation rules for the decorator expressions are the same as for function decorators. The result is then bound to the class name. +.. versionchanged:: 3.9 + Classes may be decorated with any valid :token:`assignment_expression`. + Previously, the grammar was much more restrictive; see :pep:`614` for + details. + **Programmer's note:** Variables defined in the class definition are class attributes; they are shared by instances. Instance attributes can be set in a method with ``self.name = value``. Both class and instance attributes are diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst index a59de48..befd6d0 100644 --- a/Doc/whatsnew/3.9.rst +++ b/Doc/whatsnew/3.9.rst @@ -138,6 +138,10 @@ Other Language Changes There are similar changes for :class:`bytes` and :class:`bytearray` objects. (Contributed by Serhiy Storchaka in :issue:`28029`.) +* Any valid expression can now be used as a :term:`decorator`. Previously, the + grammar was much more restrictive. See :pep:`614` for details. + (Contributed by Brandt Bucher in :issue:`39702`.) + New Modules =========== -- cgit v0.12