mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-11-22 02:54:25 +01:00
Translate The surprising comma example
This commit is contained in:
parent
6e246d1487
commit
191ea8343b
71
translations/README-ru.md
vendored
71
translations/README-ru.md
vendored
@ -1177,3 +1177,74 @@ CPython 3.7 [решил эту проблему](https://bugs.python.org/issue26
|
|||||||
приведенные здесь фрагменты не затронуты и по-прежнему генерируют методы :)
|
приведенные здесь фрагменты не затронуты и по-прежнему генерируют методы :)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
### ▶ All-true-ation (непереводимая игра слов) *
|
||||||
|
<!-- Example ID: dfe6d845-e452-48fe-a2da-0ed3869a8042 -->
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> all([True, True, True])
|
||||||
|
True
|
||||||
|
>>> all([True, True, False])
|
||||||
|
False
|
||||||
|
|
||||||
|
>>> all([])
|
||||||
|
True
|
||||||
|
>>> all([[]])
|
||||||
|
False
|
||||||
|
>>> all([[[]]])
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|
Почему это изменение True-False?
|
||||||
|
|
||||||
|
#### 💡 Объяснение:
|
||||||
|
|
||||||
|
- Реализация функции `all`:
|
||||||
|
|
||||||
|
- ```py
|
||||||
|
def all(iterable):
|
||||||
|
for element in iterable:
|
||||||
|
if not element:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
```
|
||||||
|
|
||||||
|
- `all([])` возвращает `True`, поскольку итерируемый массив пуст.
|
||||||
|
- `all([[]])` возвращает `False`, поскольку переданный массив имеет один элемент, `[]`, а в python пустой список является ложным.
|
||||||
|
- `all([[[[]]])` и более высокие рекурсивные варианты всегда `True`. Это происходит потому, что единственный элемент переданного массива (`[[...]]`) уже не пуст, а списки со значениями являются истинными.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
### ▶ Неожиданная запятая
|
||||||
|
<!-- Example ID: 31a819c8-ed73-4dcc-84eb-91bedbb51e58 --->
|
||||||
|
**Вывод (< 3.6):**
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> def f(x, y,):
|
||||||
|
... print(x, y)
|
||||||
|
...
|
||||||
|
>>> def g(x=4, y=5,):
|
||||||
|
... print(x, y)
|
||||||
|
...
|
||||||
|
>>> def h(x, **kwargs,):
|
||||||
|
File "<stdin>", line 1
|
||||||
|
def h(x, **kwargs,):
|
||||||
|
^
|
||||||
|
SyntaxError: invalid syntax
|
||||||
|
|
||||||
|
>>> def h(*args,):
|
||||||
|
File "<stdin>", line 1
|
||||||
|
def h(*args,):
|
||||||
|
^
|
||||||
|
SyntaxError: invalid syntax
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 💡 Объяснение:
|
||||||
|
|
||||||
|
- Запятая в конце списка аргументов функции Python не всегда законна.
|
||||||
|
- В Python список аргументов определяется частично с помощью ведущих запятых, а частично с помощью запятых в конце списка. Этот конфликт приводит к ситуациям, когда запятая оказывается в середине, и ни одно из правил не выполняется.
|
||||||
|
- **Примечание:** Проблема с запятыми в конце списка аргументов [исправлена в Python 3.6](https://bugs.python.org/issue9232). Варианты использования запятых в конце выражения приведены в [обсуждении](https://bugs.python.org/issue9232#msg248399).
|
||||||
|
|
||||||
|
---
|
||||||
|
Loading…
Reference in New Issue
Block a user