mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-11-22 11:04:25 +01:00
Translate Name resolution ignoring class scope example
This commit is contained in:
parent
40503d5ac5
commit
a25fe26adc
44
translations/README-ru.md
vendored
44
translations/README-ru.md
vendored
@ -2473,3 +2473,47 @@ a += [5, 6, 7, 8]
|
|||||||
* Выражение `a += [5,6,7,8]` фактически отображается на функцию "extend", которая работает со списком так, что `a` и `b` по-прежнему указывают на тот же самый список, который был изменен на месте.
|
* Выражение `a += [5,6,7,8]` фактически отображается на функцию "extend", которая работает со списком так, что `a` и `b` по-прежнему указывают на тот же самый список, который был изменен на месте.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
### ▶ Разрешение имен игнорирует область видимости класса
|
||||||
|
<!-- Example ID: 03f73d96-151c-4929-b0a8-f74430788324 --->
|
||||||
|
1\.
|
||||||
|
```py
|
||||||
|
x = 5
|
||||||
|
class SomeClass:
|
||||||
|
x = 17
|
||||||
|
y = (x for i in range(10))
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат:**
|
||||||
|
```py
|
||||||
|
>>> list(SomeClass.y)[0]
|
||||||
|
5
|
||||||
|
```
|
||||||
|
|
||||||
|
2\.
|
||||||
|
```py
|
||||||
|
x = 5
|
||||||
|
class SomeClass:
|
||||||
|
x = 17
|
||||||
|
y = [x for i in range(10)]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат (Python 2.x):**
|
||||||
|
```py
|
||||||
|
>>> SomeClass.y[0]
|
||||||
|
17
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат (Python 3.x):**
|
||||||
|
```py
|
||||||
|
>>> SomeClass.y[0]
|
||||||
|
5
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 💡 Объяснение
|
||||||
|
- Области видимости, вложенные внутрь определения класса, игнорируют имена, связанные на уровне класса.
|
||||||
|
- Выражение-генератор имеет свою собственную область видимости.
|
||||||
|
- Начиная с версии Python 3.X, списковые вычисления также имеют свою собственную область видимости.
|
||||||
|
|
||||||
|
---
|
||||||
|
Loading…
Reference in New Issue
Block a user