Python Glossary English

все Python 3astпонятие

ast.BitOr

операторы

Класс побитового оператора |: экземпляр BitOr() стоит в op узла BinOp или AugAssign. Им же выражено объединение множеств, словарей и типов int | None.

Синтаксис

ast.BitOr()  # |

Аннотация int | None в дереве — обычный BinOp с BitOr, отдельного узла для объединения типов нет. А вот | в шаблоне case 1 | 2 — совсем другое: это MatchOr, и BinOp там не появляется. Логическое or — Or в BoolOp, а не BitOr.

Примеры

import ast
fn = ast.parse('def f(x: int | None): pass').body[0]
print(type(fn.args.args[0].annotation.op).__name__)  # → BitOr
match = ast.parse('match v:\n    case 1 | 2: pass').body[0]
print(type(match.cases[0].pattern).__name__)  # → MatchOr

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности