Вы уверены, что хотите покинуть сраницу?
Не сохранные данные будет утеряны!
a = 8
if a > 3:
print('Ok')
# Ok
if a > 10
print('Ok')
#
if a > 3: print('Ok')
# Ok
if a > 3: print('Ok'); print('a > 3')
# Ok
# a > 3
if a > 10:
print('Ok')
else:
print('Not Ok')
# Not Ok
if isinstance(a, (int, float)):
if a > 0:
print('Positive')
else:
print('Not positive')
else:
print('NaN')
# Positive
a if a > 0 else 0
# 8
('AM', 'PM')[a >= 12]
(
a if a > 0 else
0 if a < 0 else
-a
)
# 8
if a > 8:
print('Ok')
elif a > 3:
print('Almost Ok')
else:
print('Not Ok')
'Almost Ok'
Это число, строка, булево значение или None
.
match value:
case 0:
...
case "zero":
...
case True:
...
Позволяет захватить переменную. Захваченную переменную можно использовать внутри соответствующего блока.
match value
case x:
print(f'The x is {x}')
case [a, b]:
print(a + b)
Обозначается нижним подчеркиванием - _. Он подходит к любому субъекту, но не может захватить какие-то переменные субъекта.
value = 'aaa'
match value:
case 0:
print('zero')
case _:
print('Not a zero')
# Not a zero
Используются для доступа к аттрибутам класса.
match frame
case LeftFrame(size, color="orange"):
...
Вертикальная черта |
эквивалентна or
.
match n
case (0 | 1):
...
Условное выражение, позволяющее выполнить блок кода только если оно возвращает True
.
match value
case [x, *rest] if x == 0:
...
case [x, *rest] if x > 0:
...
case _:
...
Стражи недопустимы во вложенных паттернах.
Шпаргалка по всем функциям модуля itertools, создающим разнообразные итераторы.