2017-04-07 11 views
4

新しいPythonの「キーワード」asyncawaitについて読んだことがあります。しかし、実際にはキーワードでも名前空間にも予約されていません。 Pythonでasyncとは何ですか?

>>> import keyword 
>>> keyword.iskeyword("async") 
False 
>>> async 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'async' is not defined 

の例では、私はキーワードの TrueSyntaxErrorを期待します。

したがって、正確にはasyncはPythonでですか?使い方?

+0

'async'はPython 3.5にのみ適用されます。それは使用しているバージョンですか? –

+5

'async'と' await'はまだ "本当の"キーワードではありませんが、Python 3.7になります。 – vaultah

+0

私はPython 3.6.0を使用します –

答えて

4

後方互換性のために、asyncおよびawaitは、ugly tokenizer hackによって解析されます。 async def関数定義の内部で、またはdefの前に直接asyncため、トークナイザはNAMEasyncのトークンとASYNCawaitAWAITトークンを置き換えます。他の文脈では、トークナイザは、asyncawaitのトークンを識別子として扱い、通常のNAMEのトークンを発行します。

あなたはParser/tokenizer.cでそれを処理するコードを見ることができ、あなたは、PEP 492asyncawait構文を導入PEPを後方互換性の計画を見つけることができます。

関連する問題