Мегаобучалка Главная | О нас | Обратная связь


Полные имена для классов и функций



2015-11-23 530 Обсуждений (0)
Полные имена для классов и функций 0.00 из 5.00 0 оценок




Функции и объекты класса в python 3.3 имеют новый атрибут __qualname__ (представляет «путь» от модуля верхнего уровня). Для глобальных функций и классов это то же, что и __name__ . Для других функций и классов, он обеспечивает лучшую информацию о том, где они были фактически определены, и как они могут быть доступны из глобальной области.

Пример с (несвязанным) методом:

>>> class C:... def meth(self):... pass>>> C.meth.__name__'meth'>>> C.meth.__qualname__'C.meth'

 

 

Пример с вложенными классами:

>>> class C:... class D:... def meth(self):... pass...>>> C.D.__name__'D'>>> C.D.__qualname__'C.D'>>> C.D.meth.__name__'meth'>>> C.D.meth.__qualname__'C.D.meth'

Пример с вложенной функцией:

>>> def outer():... def inner():... pass... return inner...>>> outer().__name__'inner'>>> outer().__qualname__'outer..inner'

Строковое представление этих объектов также изменено, для отображения большей информации:

>>> str(C.D)"">>> str(C.D.meth)''

PEP 412: Ключ-шеринг словари

Словари в python 3.3 теперь имеют возможность совместно использовать часть памяти, хранящую ключи и их хеши, что повышает производительность большинства не встроенных типов.

Вышел Python 3.4.0

Новые особенности:

· В поставку добавлен инсталлятор для пакетного менеджера pip.

· Новые файловые дескрипторы теперь по умолчанию не наследуются дочерними подпроцессами.

· Опция командной строки для изолированного режима (-I).

· Улучшения в обработке нетекстовых кодеков.

· Стандартизирован тип "ModuleSpec" для предоставления метаданных системы импорта модулей на стадии до непосредственной загрузки модуля.

· marshal стал более компактным и эффективным.

Новые модули:

· asyncio: новый предварительный API для асинхронного ввода-вывода.

· ensurepip: загрузка инсталлятора pip.

· enum: реализация классов IntEnum и Enum для работы со списками перечислимых констант.

· pathlib: объектно-ориентированный интерфейс для доступа к файловой системе.

· selectors: высокоуровневое и эффективное мультиплексирование ввода-вывода, надстройка над модулем select.

· statistics: модуль для математической статистики.

· tracemalloc: трассировка распределения памяти.

Значительно улучшенные модули:

· В functools добавлены generic-функции одиночной диспетчеризации (Single-dispatch generic functions).

· Новый протокол pickle 4.

· multiprocessing имеет опцию для избежания использования os.fork в Unix.

· email имеет новый подмодуль contentmanager, и новый подкласс класса Message (EmailMessage), что упрощает обработку MIME.

· inspect и pydoc способны к корректной интроспекции более широкого круга вызываемых объектов, что улучшает вывод функции help().

· ipaddress объявлен стабильным.

Улучшения безопасности:

· Более безопасный алгоритм хэширования.

· Новая функция hashlib.pbkdf2_hmac() (хэширование по алгоритму PBKDF2).

· В модуль ssl добавлена поддержка SNI (Server Name Indication, позволяет обеспечить доступ через шифрованное соединение к виртуальным хостам на одном IP) на стороне сервера, а также поддержка TLSv1.1 и TLSv1.2.

Улучшения CPython:

· Безопасная финализация объектов.

· Новый C API для создания собственных методов распределения памяти.

Подробнее: https://docs.python.org/3/whatsnew/3.4.html.

Pythondigest.ru - самые свежие новости из мира Python

Многие уже видели этот ресурс, а кто не видел - рассказываю, так как ресурс действительно стоящий.

pythondigest.ru - агрегатор новостей о Python, где каждый может добавить свою (или увиденную на просторе интернета) новость из мира Python.

Новости можно фильтровать по языку (русский или английский), а также по разделам:

· Интересные проекты, инструменты, библиотеки

· Книги и документация

· Конференции, события, встречи разработчиков

· Новости

· Релизы

· Статьи и интервью

· Видео

Например, все русские новости.

Также каждую неделю составляется выпуск новостей. Например, самый первый выпуск.

Также можно подписаться на новости от pythondigest по RSS или через twitter.

Модуль fractions

Модуль fractions предоставляет поддержку рациональных чисел.

class fractions.Fraction(numerator=0, denominator=1)

class fractions.Fraction(other_fraction)

class fractions.Fraction(float)

class fractions.Fraction(decimal)

class fractions.Fraction(string)

Класс, представляющий собой рациональные числа. Экземпляр класса можно создать из пары чисел (числитель, знаменатель), из другого рационального числа, числа с плавающей точкой, числа типа decimal.Decimal, и из строки, представляющей собой число.

>>> from fractions import Fraction>>> Fraction(1, 3)Fraction(1, 3)>>> Fraction(2, 6)Fraction(1, 3)>>> Fraction(100)Fraction(100, 1)>>> Fraction()Fraction(0, 1)>>> Fraction('3/7')Fraction(3, 7)>>> Fraction(' 3/7 ')Fraction(3, 7)>>> Fraction('3.1415')Fraction(6283, 2000)>>> Fraction(3.1415)Fraction(7074029114692207, 2251799813685248)

Необходимо заметить, что, поскольку числа с плавающей точкой не совсем точны, получающееся рациональное число может отличаться от того, что мы хотим получить. Можете поделить столбиком 7074029114692207 на 2251799813685248 и убедиться :)

Рациональные числа можно, как int и float, складывать, умножать, делить...

>>> from fractions import Fraction>>> a = Fraction(1, 7)>>> b = Fraction(1, 3)>>> a + bFraction(10, 21)>>> a - bFraction(-4, 21)>>> a * bFraction(1, 21)>>> a / bFraction(3, 7)>>> a % bFraction(1, 7)>>> b % aFraction(1, 21)>>> a ** b0.5227579585747102>>> abs(a - b)Fraction(4, 21)

Fraction.limit_denominator(max_denominator=1000000) - ближайшее рациональное число со знаменателем не больше данного.

>>> from fractions import Fraction>>> a = Fraction(3.1415)>>> aFraction(7074029114692207, 2251799813685248)>>> a.limit_denominator()Fraction(6283, 2000)

Также, помимо класса рациональных чисел, модуль fractions предоставляет функцию для нахождения наибольшего общего делителя.

fractions.gcd(a, b) - наибольший общий делитель чисел a и b.

>>> from fractions import gcd>>> gcd(1, 5)1>>> gcd(1000, 3)1>>> gcd(4, 6)2>>> gcd(0, 2)2>>> gcd(0, 0)0

 

Модуль cmath

Модуль cmath – предоставляет функции для работы с комплексными числами.

cmath.phase(x) - возвращает фазу комплексного числа (её ещё называют аргументом). Эквивалентно math.atan2(x.imag, x.real). Результат лежит в промежутке [-π, π].

Получить модуль комплексного числа можно с помощью встроенной функции abs().

cmath.polar(x) - преобразование к полярным координатам. Возвращает пару (r, phi).

cmath.rect(r, phi) - преобразование из полярных координат.

cmath.exp(x) - ex.

cmath.log(x[, base]) - логарифм x по основанию base. Если base не указан, возвращается натуральный логарифм.

cmath.log10(x) - десятичный логарифм.

cmath.sqrt(x) - квадратный корень из x.

cmath.acos(x) - арккосинус x.

cmath.asin(x) - арксинус x.

cmath.atan(x) - арктангенс x.

cmath.cos(x) - косинус x.

cmath.sin(x) - синус x.

cmath.tan(x) - тангенс x.

cmath.acosh(x) - гиперболический арккосинус x.

cmath.asinh(x) - гиперболический арксинус x.

cmath.atanh(x) - гиперболический арктангенс x.

cmath.cosh(x) - гиперболический косинус x.

cmath.sinh(x) - гиперболический синус x.

cmath.tanh(x) - гиперболический тангенс x.

cmath.isfinite(x) - True, если действительная и мнимая части конечны.

cmath.isinf(x) - True, если либо действительная, либо мнимая часть бесконечна.

cmath.isnan(x) - True, если либо действительная, либо мнимая часть NaN.

cmath.pi - π.

cmath.e - e.

 

Модуль glob

Модуль glob находит все пути, совпадающие с заданным шаблоном в соответствии с правилами, используемыми оболочкой Unix. Обрабатываются символы "*" (произвольное количество символов), "?" (один символ), и диапазоны символов с помощью []. Для использования тильды "~" и переменных окружения необходимо использовать os.path.expanduser() и os.path.expandvars().

Для поиска спецсимволов, заключайте их в квадратные скобки. Например, [?] соответствует символу "?".

glob.glob(pathname) возвращение список (возможно, пустой) путей, соответствующих шаблону pathname. Путь может быть как абсолютным (например, /usr/src/Python-1.5/Makefile) или относительный (как ../../Tools/*/*.gif).

glob.iglob(pathname) - возвращает итератор, дающий те же значения, что и glob.glob.

glob.escape(pathname) - экранирует все специальные символы для glob ("?", "*" и "["). Специальные символы в имени диска не экранируются (так как они там не учитываются), то есть в Windows escape("//?/c:/Quo vadis?.txt") возвращает "//?/c:/Quo vadis[?].txt". (новое в python 3.4).

Рассмотрим, например, каталог, содержащий только следующие файлы: 1.gif, 2.txt и card.gif. glob.glob() вернёт следующие результаты. Обратите внимание, что любые ведущие компоненты пути сохраняются.

>>> import glob>>> glob.glob('./[0-9].*')['./1.gif', './2.txt']>>> glob.glob('*.gif')['1.gif', 'card.gif']>>> glob.glob('?.gif')['1.gif']

Если каталог содержит файлы, начинающиеся с ".", они не будут включаться по умолчанию. Рассмотрим, например, каталог, содержащий card.gif и .card.gif:

>>> import glob>>> glob.glob('*.gif')['card.gif']>>> glob.glob('.c*')['.card.gif']

 

 



2015-11-23 530 Обсуждений (0)
Полные имена для классов и функций 0.00 из 5.00 0 оценок









Обсуждение в статье: Полные имена для классов и функций

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (530)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)