Михаил Омельченко | AI&IT
4.92K subscribers
904 photos
177 videos
4 files
651 links
Технический контент, туториалы и документация для IT-продуктов.
20 лет в IT. Менторство.

Реклама и сотрудничество:
Telegram - @DJWOMS
YouTube - https://www.youtube.com/c/DjangoSchool
Download Telegram
Еще одним ограничением f-строк до версии 3.12 является невозможность использования символов обратной косой черты во встроенных выражениях. Рассмотрим следующий пример, в котором вы пытаетесь объединить строки с помощью символа обратной последовательности \n:
>>> words = ["Hello", "World!", "I", "am", "a", "Pythonista!"]
>>> f"{'\n'.join(words)}"
File "<input>", line 1
f"{'\n'.join(words)}"
^
SyntaxError: f-string expression part cannot include a backslash

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

Опять-таки, новая реализация f-строк, появившаяся с Python 3.12, решает эту проблему:
>>> # Python 3.12
>>> words = ["Hello", "World!", "I", "am", "a", "Pythonista!"]
>>> f"{'\n'.join(words)}"
'Hello\nWorld!\nI\nam\na\nPythonista!'\

>>> print(f"{'\n'.join(words)}")
Hello
World!
I
am
a
Pythonista!

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

#python #djangoschool
👍2🔥2
F-строки до версии Python 3.11 не позволяли использовать символ # во встроенных выражениях. Из-за этого нельзя было вставлять комментарии во встроенные выражения. Если попытаться это сделать, то будет выдана синтаксическая ошибка:
>>> employee = {
... "name": "John Doe",
... "age": 35,
... "job": "Python Developer",
... }

>>> f"""Storing employee's data: {
... employee['name'].upper() # Always uppercase name before storing
... }"""
File "<stdin>", line 3
}"""
^
SyntaxError: f-string expression part cannot include '#'

Когда вы используете # для ввода комментария в f-строку, вы получаете синтаксическую ошибку. К счастью, в новых f-строках Python 3.12 эта проблема также устранена:
>>> #Python 3.12

>>> employee = {
... "name": "John Doe",
... "age": 35,
... "job": "Python Developer",
... }

>>> f"Storing employee's data: {
... employee["name"].upper() # Always uppercase name before storing
... }"
"Storing employee's data: JOHN DOE"

Теперь можно добавлять встроенные комментарии, если необходимо что-то уточнить в выражениях f-строки. Еще одним улучшением является возможность добавлять разрывы строк внутри фигурных скобок, аналогично тому, как это можно делать внутри круглых скобок в f-строках. Для этого даже не нужно использовать строки с тройными кавычками.

#python #djangoschool
👍6
Расшифровка сообщений об ошибках F-строк

>>> # Python 3.11
>>> f"{42 + }"
File "<stdin>", line 1
(42 + )
^
SyntaxError: f-string: invalid syntax

>>> # Python 3.12
>>> f"{42 + }"
File "<stdin>", line 1
f"{42 + }"
^
SyntaxError: f-string: expecting '=', or '!', or ':', or '}'

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

В Python 3.12 сообщение об ошибке более подробное. Оно сигнализирует о точном месте проблемы в строке. Кроме того, сообщение об ошибке содержит некоторые предложения, которые могут помочь решить проблему.

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

#python #djangoschool
🔥6👍21
Собрались идти на конфу по python😎
14👍7🔥6🍾2
Сколько новых и старых знакомых
👍105
Не ожидал встретить столько подписчиков 😎👍
15👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Домой после конфы. Жаль на утрению сходку не попал.

Рад был новым встречам.
В следующий раз смелее подходите фотографироваться😎
👍2
Тревел блогер😁😆
6🍾5