bpo-29974: Improve typing.TYPE_CHECKING example (GH-982)

* Fix PEP 8 (SomeType instead of some_type)
* Add a function parameter annotation
* Explain, using wording from PEP 484 and PEP 526,
  why one annotation is in quotes and another is not.

Suggested by Ivan Levkevskyi.

(cherry picked from commit 87c07fe9d9)
This commit is contained in:
Berker Peksag 2017-04-26 17:25:37 +03:00 committed by GitHub
parent 9f6828119d
commit 04f389b8b3
1 changed files with 7 additions and 2 deletions

View File

@ -1041,5 +1041,10 @@ The module defines the following classes, functions and decorators:
if TYPE_CHECKING:
import expensive_mod
def fun():
local_var: expensive_mod.some_type = other_fun()
def fun(arg: 'expensive_mod.SomeType') -> None:
local_var: expensive_mod.AnotherType = other_fun()
Note that the first type annotation must be enclosed in quotes, making it a
"forward reference", to hide the ``expensive_mod`` reference from the
interpreter runtime. Type annotations for local variables are not
evaluated, so the second annotation does not need to be enclosed in quotes.