TGViewer
Channel Public Channel
Just Python

Just Python

@justpython_it

🐍Простое изучение Python.

Ссылка: @Portal_v_IT

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

Канал на бирже: telega.in/c/justpython_it

РКН: clck.ru/3MnbSc
Subscribers
9.77K
Photos
4.8K
Videos
19
Links
4.7K

Showing posts older than #4784 · Back to latest

Older Posts 20 shown
Post #4783 456
Все разобрано? (ч.2)

Таким образом, во время сравнения sorted(y) == sorted(y) первый вызов sorted() будет использовать итератор y, а следующий вызов просто вернет пустой список.

#theory // Just Python
Post #4782 452
Все разобрано? (ч.1)

Sorted Метод всегда возвращает список, а сравнение списков и кортежей всегда возвращает False результат на Python.

В отличие от этого, sortedметод reversed возвращает итератор. Почему? Потому что сортировка требует, чтобы итератор был либо изменен на месте, либо использовал дополнительный контейнер (список), тогда как реверсирование может просто работать путем повторения от последнего индекса к первому.

#theory // Just Python
Post #4780 434
Полуночного времени не существует?

До Python 3.5 логическое значение для datetime.time объекта считалось равным False, если оно представляло полночь по UTC. Он подвержен ошибкам при использовании if obj: синтаксиса для проверки, является ли obj нулевым или каким-либо эквивалентом "пустого".

#theory // Just Python
Post #4779 460
Дикий импорт (ч.3)

Если вы действительно хотите использовать импорт по шаблону, то вам нужно будет определить список all в вашем модуле, который будет содержать список общедоступных объектов, которые будут доступны, когда мы выполним импорт по шаблону.

#theory // Just Python
Post #4778 486
Дикий импорт (ч.2)

Если бы мы использовали from ... import a, b, c синтаксис, прошлого NameError не произошло бы.

#theory // Just Python
Post #4776 489
Дикий импорт (ч.1)

Часто рекомендуется не использовать импорт подстановочных знаков. Первая очевидная причина этого заключается в том, что при импорте подстановочных знаков имена с начальным подчеркиванием не импортируются. Это может привести к ошибкам во время выполнения.

#theory // Just Python
Post #4775 421
print("Программирование — В С Ё!")


В 2025 году на кодинге уже не вывезешь, перспектива года - Кибербезопасность.

Ловите полезные каналы, которые помогут ворваться в новое направление:

👍 ZeroDay — Подробные уроки по безопасности с нуля, эксплуатации уязвимостей, инструментам и свежие новости.

👨‍💻 Серверная Админа — Большое количество уроков, статей, книг и гайдов по устройству и настройке компьютерных сетей. База которую должен знать каждый
Post #4774 429
Разбиения

На первый взгляд может показаться, что разделителем по умолчанию для split является один пробел ' ', но согласно документации:

Если sep не указан или есть None, применяется другой алгоритм разделения: последовательные пробельные строки рассматриваются как единый разделитель, и результат не будет содержать пустых строк в начале или в конце, если строка содержит начальный или конечный пробел. Следовательно, возвращается разделение пустой строки или строки, состоящей только из пробелов с разделителем None []. Если задан sep, последовательные разделители не группируются вместе и считаются разделителями пустых строк (например, '1,,2'.split(',') возвращает ['1', '', '2']). Возвращает разделение пустой строки указанным разделителем [''].

#theory // Just Python
Post #4773 432
Иголки в стоге сена (ч.6)

Последний должен быть довольно очевидным, изменяемым объектом (например list) может быть изменен в функции, и переназначение неизменяемого (a -= 1) не является изменением значения.

#theory // Just Python
Post #4772 431
Иголки в стоге сена (ч.5)

Что касается пятого фрагмента, большинство методов, которые изменяют элементы объектов последовательности / сопоставления, такие как list.append, dict.update, list.sort и т.д. измените объекты на месте и верните None. Обоснование этого заключается в повышении производительности за счет отказа от создания копии объекта, если операция может быть выполнена на месте.

#theory // Just Python
Post #4770 465
Иголки в стоге сена (ч.4)

В 4-м фрагменте на AssertionError был поднят вопрос, потому что вместо утверждения отдельного выражения a == b мы утверждаем весь кортеж. Следующий фрагмент прояснит ситуацию,

>>> a = "python"
>>> b = "javascript"
>>> assert a == b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError

>>> assert (a == b, "Значения не равны")
<stdin>:1: SyntaxWarning: assertion is always true, perhaps remove parentheses?

>>> assert a == b, "Значения не равны"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError: Values are not equal


#theory // Just Python
Post #4769 464
Иголки в стоге сена (ч.3)

В 3, как вы, возможно, уже поняли, после 5-го элемента ("that") в списке отсутствует запятая. Итак, с помощью неявной конкатенации строковых литералов,

>>> ten_words_list
['some', 'very', 'big', 'list', 'thatconsists', 'of', 'exactly', 'ten', 'words']


#theory // Just Python
Post #4767 467
Иголки в стоге сена (ч.2)

Для 2 правильным выражением для ожидаемого поведения является t = ('one',) or t = 'one', (пропущенная запятая), в противном случае интерпретатор считает, что t это str и повторяет его посимвольно.

() является специальным маркером и обозначает пустой tuple.

#theory // Just Python
Post #4765 466
Иголки в стоге сена (ч.1)

Для 1 правильным утверждением для ожидаемого поведения является x, y = (0, 1) if True else (None, None).

#theory // Just Python
Post #4764 555
Округляет, как банкир (ч.2)

Это рекомендуемый способ округления дробей .5, как описано в IEEE 754. Однако в школе большую часть времени преподают другой способ (округление от нуля), поэтому округление банкира, вероятно, не так хорошо известно. Кроме того, некоторые из самых популярных языков программирования (например: JavaScript, Java, C / C ++, Ruby, Rust) также не используют банковское округление.

Следовательно, это все еще довольно специфично для Python и может привести к путанице при округлении дробей.

Смотрите Документы round() или этот поток stackoverflow для получения дополнительной информации.

Обратите внимание, что get_middle([1]) было возвращено только 1, потому что индекс был round(0.5) - 1 = 0 - 1 = -1, возвращая последний элемент в списке.

#theory // Just Python
Post #4763 477
Округляет, как банкир (ч.1)

Давайте реализуем наивную функцию для получения среднего элемента списка

Это не ошибка точности с плавающей запятой, на самом деле, такое поведение является преднамеренным. Начиная с Python 3.0, round() использует округление банкира, где дроби .5 округляются до ближайшего четного числа:

#theory // Just Python
Post #4761 416
Разрешение имен, игнорирующее область видимости класса (ч.2)

Выражение генератора имеет свою собственную область видимости.

Начиная с Python 3.X, понимание списков также имеет свою собственную область.

#theory // Just Python
Post #4760 430
Разрешение имен, игнорирующее область видимости класса (ч.1)

Области, вложенные внутри определения класса, игнорируют имена, связанные на уровне класса.

#theory // Just Python
Post #4759 473
Те же операнды, другая история! (ч.2)

Выражение a += [5,6,7,8] на самом деле сопоставлено с функцией "extend", которая работает со списком таким образом, что a и b по-прежнему указывают на тот же список, который был изменен на месте.

#theory // Just Python
Post #4757 458
Те же операнды, другая история! (ч.1)

a += b не всегда ведет себя так же, как a = a + b. Классы могут по-разному реализовывать op= операторы, и списки делают это.

Выражение a = a + [5,6,7,8] генерирует новый список и устанавливает a ссылку на этот новый список, оставляя b без изменений.

#theory // Just 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 →