TGViewer
Channel Public Channel
Разъяснивший Python

Разъяснивший Python

@python_pssss

Твой проводник в омут Python'а

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: https://telega.in/c/python_pssss
Subscribers
6.97K
Photos
3.3K
Videos
48
Links
3.3K

Showing posts older than #3757 · Back to latest

Older Posts 20 shown
Post #3755 368
+= быстрее

Почему +- быстрее?

+= быстрее, чем + в объединениях более двух строк, потому что первая строка (например, s1 для s1 += s2 + s3) не уничтожается при вычислении полной строки.

Разъяснивший Python
Post #3754 424
Ну, что-то здесь не так...

Почему в первом выводе у нас получилось 10, а не 100?

Это потому что мы смешали табуляцию и пробелы. Символ, непосредственно предшествующий возвращению, является "табуляцией", и в другом месте примера код имеет отступ, кратный "4 пробелам".

"tab" в последней строке square функции заменяется восемью пробелами, и она попадает в цикл.

Зато Python 3 достаточно любезен, чтобы автоматически выдавать ошибку в таких случаях.

Разъяснивший Python
  • 👎 1
  • 🔥 1
Post #3753 400
Проверка аргументов функции без лишнего кода с functools.singledispatch

Когда нужно писать разные реализации одной функции в зависимости от типа аргумента, не спеши писать if isinstance(...) — есть элегантнее способ!

Итог:
singledispatch — способ реализовать полиморфизм для функций: избавляет от длинных ветвлений по типам, упрощает поддержку и расширение кода.

Разъяснивший Python
Post #3751 393
Давайте переделаем (ч.3)

Третий фрагмент также был следствием искажения имени. Имя __variable в инструкции return __variable было искажено до _A__variable, которое также является именем переменной, объявленной нами во внешней области видимости.

Кроме того, если искаженное имя длиннее 255 символов, произойдет усечение.

Разъяснивший Python
Post #3750 422
Телепортация

Обратите внимание, что массив numpy, созданный в energy_send функции, не возвращается, так что пространство памяти свободно для перераспределения.

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

Разъяснивший Python
Post #3749 424
Пропуск строк

Некоторые незападные символы выглядят идентично буквам английского алфавита, но интерпретатор считает их разными.

Встроенная ord() функция возвращает кодовую точку символа в Юникоде, а различные кодовые позиции кириллицы 'e' и латиницы 'e' оправдывают поведение нашего примера примера.

Разъяснивший Python
Post #3747 460
Выводим аудио дорожку из видео

Бывает так, что у нас есть mp4-файл, но нам нужна только звуковая дорожка из него. Скажем, чтобы сделать другое видео с таким же звуковым сопровождением. Эта проблема решается установкой библиотеки moviepy.

Разъяснивший Python
Post #3746 469
Открываем локально поисковую строку Google

Порой мы так глубоко погружаемся в написание кода, что нам неохота открывать браузер для поиска нужной информации. Установив потрясающую библиотеку google, можно делать запрос в поисковик прямо в консоли.

Разъяснивший Python
  • 🔥 1
Post #3745 471
Давайте переделаем (ч.2)

Итак, чтобы получить доступ к атрибуту __honey в первом фрагменте, нам пришлось добавить _Yo в начало, что предотвратило бы конфликты с атрибутом того же имени, определенным в любом другом классе.

Но тогда почему это не сработало во втором фрагменте? Потому что искажение имен исключает имена, заканчивающиеся двойным подчеркиванием.

Разъяснивший Python
  • 👍 1
Post #3743 451
Давайте переделаем (ч.1)

Искажение имен используется, чтобы избежать конфликтов именования между различными пространствами имен.

В Python интерпретатор изменяет (искажает) имена членов класса, начинающиеся с __ (двойное подчеркивание, также известное как "dunder") и не заканчивающиеся более чем одним завершающим подчеркиванием, добавляя _NameOfTheClass впереди.

Разъяснивший Python
  • 👍 1
Post #3742 443
Inpinity

Как можно представить бесконечное число в python? Независимо от того, какое число вы вводите в программу, ни одно число не должно быть больше этого представления бесконечности.

Это возможно реализовать с помощью inpinity.

При этом хэш бесконечности равен 10⁵ x π. Интересно, что хэш float('-inf') в Python 3 равен "-10⁵ x π", тогда как в Python 2 "-10⁵ x e".

Разъяснивший Python
Post #3741 475
Многоточие

В Python Ellipsis это глобально доступный встроенный объект, который эквивалентен ... .

>>> ...
Ellipsis

В основном многоточие используются для нескольких целей,

1) В качестве заполнителя для кода, который еще не был написан (точно так же, как pass инструкция)
2) В синтаксисе нарезки для представления полных фрагментов в оставшемся направлении

Разъяснивший Python
Post #3740 443
else - Предложение для циклов

Наверняка вы знаете, что в пайтоне для циклов for и while предусмотрен блок else. И с этим блоком возникает много путаницы, потому что его действие на первый взгляд неинтуитивно. Но с этим легко справиться.

else Предложение после цикла выполняется только тогда, когда после всех итераций нет явного break. Вы можете думать об этом как о предложении "nobreak".

Разъяснивший Python
Post #3738 393
Как скопировать всё содержимое внешнего файла?

В большинстве случаев возникает необходимость скопировать содержимое вашей ячейки в скрипт python или текстовый файл непосредственно из вашего блокнота Jupyter.

Вместо того чтобы копировать все и создавать новый файл, вы можете напрямую экспортировать свои данные, добавив команду writefile в ячейку перед кодом.

Разъяснивший Python
Post #3737 421
Давно хотели просмотреть содержимое внешнего файла?

Часто вам может понадобиться скопировать в свой код несколько строк кода из внешнего файла. Команда %pycat избавит вас от долгой процедуры извлечения определенных данных из файла и их копирования в другой файл. Она позволяет просматривать содержимое любого файла в любом каталоге.

Разъяснивший Python
Post #3736 434
Виртуальные среды

И так к нашему счастью, в Python есть поддержка виртуальных сред, которые позволяют взять лучшее от двух миров.

Так же вы теперь можете иметь разные независимые версии Python на одной машине

Разъяснивший Python
Post #3735 435
Сколько времени может работать код

Вы не задумывались, сколько именно времени занимает работа кода в рамках одной ячейки?

Магическая команда time позволяет получить всю необходимую информацию о времени.

Разъяснивший Python
Post #3734 451
Давайте познакомимся с дружелюбным дядей по языку на всю жизнь

Это относится к PEP-401, выпущенному 1 апреля 2009 года (теперь вы знаете, что это значит).

Цитирую из PEP-401

Учитывая, что оператор неравенства != в Python 3.0 был ужасной ошибкой, вызывающей боль в пальцах, FLUFL восстанавливает оператор <> diamond в качестве единственного написания.

Разъяснивший Python
Post #3732 426
Приготовьтесь!

future Модуль обычно используется для предоставления функций из будущих версий Python. Однако "будущее" в этом конкретном контексте звучит иронично.

Это пасхальное яйцо, посвященное чувствам сообщества по этому вопросу.

Код на самом деле присутствует здесь, в future.c файле.

Когда компилятор CPython сталкивается с инструкцией future, он сначала запускает соответствующий код в future.c, прежде чем рассматривать его как обычную инструкцию import .

Разъяснивший Python
Post #3731 402
Объединение нескольких словарей без update()

Обычно для объединения словарей используют .update(), но с Python 3.9 можно делать это удобнее и читаемее — с помощью оператора |.

Итог:
Оператор | — лаконичный способ объединять словари. Второй словарь переопределяет ключи первого.

Разъяснивший Python
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →