⇤ ← Версия 1 от 2020-09-15 10:44:40
4729
Комментарий:
|
6397
|
Удаления помечены так. | Добавления помечены так. |
Строка 2: | Строка 2: |
'''TODO''' gc.get_referrers() | == Долги за прошлый раз: gc == Связывание и refcount: * Как кешируются объекты? (а нужно ли это знать) {{{#!python >>> a, b = 1092, 1092; c = 1092 >>> a is b is c True >>> a, b = 1092, 1092 >>> c = 1092 >>> a is b, a is c (True, False) }}} но {{{#!python >>> a, b = 92, 92 >>> c = 92 >>> a is b is c True }}} * проблема изолированных пространств имён {{{#!python >>> a = [1, 2, "QQ"]; b = [a, 4]; a[1] = b >>> a [1, [[...], 4], 'QQ'] >>> b [[1, [...], 'QQ'], 4] >>> a[1] is b True >>> b[0] is a True >>> c = a, b >>> sys.getrefcount(a) 4 >>> sys.getrefcount(c[0]) 4 >>> del a, b >>> sys.getrefcount(c[0]) 3 >>> sys.getrefcount(c[1]) 3 >>> del c }}} * Немножко про [[py3doc:gc]] {{{#!python >>> import gc >>> gc.disable() >>> gc.set_debug(gc.DEBUG_LEAK) >>> a = [1,.2,3]; a[1] = a >>> a [1, [...], 3] >>> hex(id(a)) '0x7f699e930800' >>> del a >>> gc.collect() gc: collectable <list 0x7f699e930800> 1 >>> gc.garbage [[1, [...], 3]] }}} * Как посмотреть все ссылки на объект: [[py3doc:gc.html#gc.get_referrers|gc.get_referrers()]] * что такое `dir()` и `globals()` == Чуть-чуть про математику == * `import math` vs. `from math import *` * вычисления в ''рациональных'' числах с помощью [[py3doc:decimal]] и [[py3doc:fractions]] * `decimal.Decimal(1.1)` vs. `decimal.Decimal("1.1")` * `fractions.Fraction(1/3)` vs. `fractions.Fraction(1,3)` * Про функцию [[py3doc:math#math.atan2|atan2()]] — см. [[WP:Atan2]] |
Строка 4: | Строка 70: |
'''TODO''' отредактировать | |
Строка 122: | Строка 187: |
1. <<EJCMC(131, IntPalindrome, Число-палиндром)>> 1. <<EJCMC(131, AnyPower, Какая-нибудь степень)>> 1. <<EJCMC(131, BiSection, Половинное деление)>> * Кстати, [[attachment:TuneFun.py|программа, с помощью которой я генерировал тесты]] 1. ( <!> если перейти по ссылке «Вращающееся число», вы увидите некоторые подсказки) <<EJCMC(131, SwapFive, Вращающееся число)>> |
1. '''TODO''' ## 1. <<EJCMC(131, IntPalindrome, Число-палиндром)>> ## 1. <<EJCMC(131, AnyPower, Какая-нибудь степень)>> ## 1. <<EJCMC(131, BiSection, Половинное деление)>> ## * Кстати, [[attachment:TuneFun.py|программа, с помощью которой я генерировал тесты]] ## 1. ( <!> если перейти по ссылке «Вращающееся число», вы увидите некоторые подсказки) <<EJCMC(131, SwapFive, Вращающееся число)>> |
Логические выражения, условные операторы и цикл
Долги за прошлый раз: gc
Связывание и refcount:
- Как кешируются объекты? (а нужно ли это знать)
- но
- проблема изолированных пространств имён
1 >>> a = [1, 2, "QQ"]; b = [a, 4]; a[1] = b 2 >>> a 3 [1, [[...], 4], 'QQ'] 4 >>> b 5 [[1, [...], 'QQ'], 4] 6 >>> a[1] is b 7 True 8 >>> b[0] is a 9 True 10 >>> c = a, b 11 >>> sys.getrefcount(a) 12 4 13 >>> sys.getrefcount(c[0]) 14 4 15 >>> del a, b 16 >>> sys.getrefcount(c[0]) 17 3 18 >>> sys.getrefcount(c[1]) 19 3 20 >>> del c
Немножко про gc
Как посмотреть все ссылки на объект: gc.get_referrers()
что такое dir() и globals()
Чуть-чуть про математику
import math vs. from math import *
вычисления в рациональных числах с помощью decimal и fractions
decimal.Decimal(1.1) vs. decimal.Decimal("1.1")
fractions.Fraction(1/3) vs. fractions.Fraction(1,3)
Алгебра логики
Операции сравнения, тип bool, True и False
Алгебра логики над bool
or
and
A
B
A or B
A
B
A and B
False
False
False
False
False
False
False
True
True
False
True
False
True
False
True
True
False
False
True
True
True
True
True
True
Python3: and, or, not; низкий приоритет
- Пустые и непустые объекты Python3
- Алгебра логики над произвольными объектами Python3
- OR: если A истинно, результат истинен, вычислять B не надо
- ⇒ Python: если A истинно, результат равен A, иначе B
- AND: если A ложно, результат ложен, вычислять B не надо
- ⇒ Python: если A ложно, результат равен A, иначе B
⇒ частичное вычисление выражений A и B (например, 3+3 or 100/0)
or
and
A
B
A or B
A
B
A and B
Пусто
Пусто
B
Пусто
Пусто
A
Пусто
Непусто
B
Пусто
Непусто
A
Непусто
Пусто
A
Непусто
Пусто
B
Непусто
Непусто
A
Непусто
Непусто
B
- OR: если A истинно, результат истинен, вычислять B не надо
Сравнения
Простые: == , <, !=, >= и т. п.
is , in
- Многоместные
- Таким образом,
wait шhат?
Условные действия
Конструкция a and b or c как замена тернарной операции a ? b : c в Си
Не работает, как ожидается, если b пусто
Условная операция выражение-True if выражение-условие else выражение-false
Условный оператор: if, if / else, if [/ elif [/ elif ... [else]...]]
Цикл while
- Каноническая схема цикла:
- наприпмер
breal, continue
Клауза else — не выполняется, если выход из цикла был по break:
Д/З
Прочитать и прощёлкать учебник (до функций)
TODO