mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-12-22 12:50:23 +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…
x
Reference in New Issue
Block a user