Строки и обратная косая черта (ч.1)
В обычной строке python обратная косая черта используется для экранирования символов, которые могут иметь особое значение (например, одинарная кавычка, двойная кавычка и сама обратная косая черта).
#theory // Just Python & Max
В обычной строке python обратная косая черта используется для экранирования символов, которые могут иметь особое значение (например, одинарная кавычка, двойная кавычка и сама обратная косая черта).
#theory // Just Python & Max
Строки и обратная косая черта (ч.2)
В необработанном строковом литерале (на что указывает префикс r) обратная косая черта передается как есть вместе с поведением экранирования следующего символа.
Это означает, что когда анализатор обнаруживает обратную косую черту в необработанной строке, он ожидает, что за ней последует другой символ. И в нашем случае (print(r"\")) обратная косая черта экранировала завершающую кавычку, оставляя анализатор без завершающей кавычки (отсюда SyntaxError). Вот почему обратная косая черта не работает в конце необработанной строки.
#theory // Just Python & Max
В необработанном строковом литерале (на что указывает префикс r) обратная косая черта передается как есть вместе с поведением экранирования следующего символа.
Это означает, что когда анализатор обнаруживает обратную косую черту в необработанной строке, он ожидает, что за ней последует другой символ. И в нашем случае (print(r"\")) обратная косая черта экранировала завершающую кавычку, оставляя анализатор без завершающей кавычки (отсюда SyntaxError). Вот почему обратная косая черта не работает в конце необработанной строки.
#theory // Just Python & Max
Не узел!
Приоритет оператора влияет на то, как вычисляется выражение, и == operator имеет более высокий приоритет, чем not operator в Python.
Таким образом, not x == y эквивалентноnot (x == y), что эквивалентно not (True == False) окончательной оценке True.
Но x == not y вызывает SyntaxError вопрос, потому что его можно считать эквивалентным, (x == not) y а не x == (not y) тем, что вы могли ожидать на первый взгляд.
Анализатор ожидал, что not токен будет частью not in оператора (потому что оба оператора == и not in имеют одинаковый приоритет), но после того, как не смог найти in токен, следующий за not токеном, он выдает SyntaxError.
#theory // Just Python & Max
Приоритет оператора влияет на то, как вычисляется выражение, и == operator имеет более высокий приоритет, чем not operator в Python.
Таким образом, not x == y эквивалентноnot (x == y), что эквивалентно not (True == False) окончательной оценке True.
Но x == not y вызывает SyntaxError вопрос, потому что его можно считать эквивалентным, (x == not) y а не x == (not y) тем, что вы могли ожидать на первый взгляд.
Анализатор ожидал, что not токен будет частью not in оператора (потому что оба оператора == и not in имеют одинаковый приоритет), но после того, как не смог найти in токен, следующий за not токеном, он выдает SyntaxError.
#theory // Just Python & Max
Половина строк в тройных кавычках
Python поддерживает неявную конкатенацию строковых литералов.
''' и """ также являются разделителями строк в Python, которые вызывают ошибку SyntaxError, потому что интерпретатор Python ожидал, что в качестве разделителя будет заключена тройная кавычка при сканировании текущего строкового литерала в тройных кавычках.
#theory // Just Python & Max
Python поддерживает неявную конкатенацию строковых литералов.
''' и """ также являются разделителями строк в Python, которые вызывают ошибку SyntaxError, потому что интерпретатор Python ожидал, что в качестве разделителя будет заключена тройная кавычка при сканировании текущего строкового литерала в тройных кавычках.
#theory // Just Python & Max
Что не так с логическими значениями? (ч.1)
Изначально в Python не было bool типа (люди использовали 0 для false и ненулевое значение, такое как 1 для true). True, False и bool тип был добавлен в версиях 2.x, но для обратной совместимости True и False нельзя было сделать константами. Они просто были встроенными переменными, и их можно было переназначить.
#theory // Just Python & Max
Изначально в Python не было bool типа (люди использовали 0 для false и ненулевое значение, такое как 1 для true). True, False и bool тип был добавлен в версиях 2.x, но для обратной совместимости True и False нельзя было сделать константами. Они просто были встроенными переменными, и их можно было переназначить.
#theory // Just Python & Max
Что не так с логическими значениями? (ч.2)
bool является подклассом int в Python. И, таким образом, True и False являются экземплярами int. Целочисленное значение True равно 1, а значение из False равно 0.
#theory // Just Python & Max
bool является подклассом int в Python. И, таким образом, True и False являются экземплярами int. Целочисленное значение True равно 1, а значение из False равно 0.
#theory // Just Python & Max
Что не так с логическими значениями? (ч.3)
Python 3 был обратно несовместим, проблема была наконец исправлена, и, таким образом, последний фрагмент не будет работать с Python 3.x!
#theory // Just Python & Max
Python 3 был обратно несовместим, проблема была наконец исправлена, и, таким образом, последний фрагмент не будет работать с Python 3.x!
#theory // Just Python & Max
Атрибуты класса и атрибуты экземпляра (ч.1)
Переменные класса и переменные в экземплярах класса внутренне обрабатываются как словари объекта класса. Если имя переменной не найдено в словаре текущего класса, выполняется поиск по нему в родительских классах.
#theory // Just Python & Max
Переменные класса и переменные в экземплярах класса внутренне обрабатываются как словари объекта класса. Если имя переменной не найдено в словаре текущего класса, выполняется поиск по нему в родительских классах.
#theory // Just Python & Max
Атрибуты класса и атрибуты экземпляра (ч.2)
+= Оператор изменяет изменяемый объект на месте, не создавая новый объект. Таким образом, изменение атрибута одного экземпляра влияет на другие экземпляры, а также на атрибут class.
#theory // Just Python & Max
+= Оператор изменяет изменяемый объект на месте, не создавая новый объект. Таким образом, изменение атрибута одного экземпляра влияет на другие экземпляры, а также на атрибут class.
#theory // Just Python & Max
Лови список полезных IT каналов в Max 🇷🇺
Архиватор – крупная база слитых айти курсов по программированию
Сливакер – отобранный архив полезных курсов для программистов
Полка Разработчика – сборник книг для изучения Python, JS, Java и других языков программирования;
Записки Фронтендера -- опытный Frontend-разработчик собрал все самое основное
Записки Бэкендера -- а тут опытный Backend-разработчик подбирает самое полезное
Записки Питониста -- здесь думаю итак понятно, питонисты заходите
Code Learning – ютуб в мире программистов, сборник видео для обучения
Графика и Дизайн – сборник полезных курсов и видео для полного погружения в дизайн
Нейролента – публикуем самое актуальное из мира нейросетей
Windows Community -- все что связанно с Windows
DevHumor – все что выше, без юмора не понять
Находки Программиста – подбираем все самое нужно для программистов
Архиватор – крупная база слитых айти курсов по программированию
Сливакер – отобранный архив полезных курсов для программистов
Полка Разработчика – сборник книг для изучения Python, JS, Java и других языков программирования;
Записки Фронтендера -- опытный Frontend-разработчик собрал все самое основное
Записки Бэкендера -- а тут опытный Backend-разработчик подбирает самое полезное
Записки Питониста -- здесь думаю итак понятно, питонисты заходите
Code Learning – ютуб в мире программистов, сборник видео для обучения
Графика и Дизайн – сборник полезных курсов и видео для полного погружения в дизайн
Нейролента – публикуем самое актуальное из мира нейросетей
Windows Community -- все что связанно с Windows
DevHumor – все что выше, без юмора не понять
Находки Программиста – подбираем все самое нужно для программистов
Please open Telegram to view this post
VIEW IN TELEGRAM
Уступая от ... return! (ч.1)
Куда "wtf" делся? Это из-за какого-то особого эффекта yield from?
Начиная с Python 3.3, стало возможным использовать return инструкцию со значениями внутри генераторов (см. PEP380). В официальных документах говорится, что,
"... return expr в генераторе возникают причины StopIteration(expr), которые возникают при выходе из генератора".
#theory // Just Python & Max
Куда "wtf" делся? Это из-за какого-то особого эффекта yield from?
Начиная с Python 3.3, стало возможным использовать return инструкцию со значениями внутри генераторов (см. PEP380). В официальных документах говорится, что,
"... return expr в генераторе возникают причины StopIteration(expr), которые возникают при выходе из генератора".
#theory // Just Python & Max
Уступая от ... return! (ч.2)
В случае с some_func(3), StopIteration возникает в начале из-за return заявления. StopIteration Исключение автоматически перехватывается внутри list(...) оболочки и for цикла. Следовательно, два приведенных выше фрагмента приводят к пустому списку.
Чтобы получить ["wtf"] от генератора some_func, нам нужно перехватить StopIteration исключение,
#theory // Just Python & Max
В случае с some_func(3), StopIteration возникает в начале из-за return заявления. StopIteration Исключение автоматически перехватывается внутри list(...) оболочки и for цикла. Следовательно, два приведенных выше фрагмента приводят к пустому списку.
Чтобы получить ["wtf"] от генератора some_func, нам нужно перехватить StopIteration исключение,
#theory // Just Python & Max