1
0
mirror of https://github.com/satwikkansal/wtfpython synced 2024-11-21 18:54:20 +01:00

Translate Meet Friendly Language Uncle For Life example

This commit is contained in:
Vadim Nifadev 2024-04-24 12:09:26 +03:00
parent 8ab55b7393
commit e2d0be0e2a

View File

@ -3002,3 +3002,37 @@ SyntaxError: not a chance
+ Когда компилятор CPython встречает оператор [future](https://docs.python.org/3.3/reference/simple_stmts.html#future-statements), он сначала запускает соответствующий код в `future.c`, а затем рассматривает его как обычный оператор импорта.
---
### ▶ Давайте познакомимся с дружелюбным Дядей Барри
<!-- Example ID: 6427fae6-e959-462d-85da-ce4c94ce41be --->
Непереводимая игра слов: Friendly Language Uncle For Life (FLUFL)
**Результат (Python 3.x)**
```py
>>> from __future__ import barry_as_FLUFL
>>> "Ruby" != "Python" # в этом нет сомнений
File "some_file.py", line 1
"Ruby" != "Python"
^
SyntaxError: invalid syntax
>>> "Ruby" <> "Python"
True
```
Вот так просто.
#### 💡 Объяснение:
- Это относится к [PEP-401](https://www.python.org/dev/peps/pep-0401/), выпущенному 1 Апреля 2009 (вы знаете, о чем это говорит).
- Цитата из PEP-401
> Признав, что оператор неравенства `!=` в Python 3.0 был ужасной, вызывающей боль ошибкой, FLUFL восстанавливает оператор `<>` (ромб) в качестве единственного написания.
- У Дяди Барри было еще много чего рассказать в PEP; вы можете прочитать их [здесь](https://www.python.org/dev/peps/pep-0401/).
- Это работает хорошо в интерактивной среде, но при запуске через файл python вызывает `SyntaxError` (смотри этот [issue](https://github.com/satwikkansal/wtfpython/issues/94)). Однако вы можете обернуть оператор внутри `eval` или `compile`, чтобы заставить его работать (но зачем?)
```py
from __future__ import barry_as_FLUFL
print(eval('"Ruby" <> "Python"'))
```
---