При нажатии на Enter PyCharm добавляет скобки

r = requests.get(url=url)
headers = ''

При нажатии на Enter находясь между кавычками PyCharm редактирует код:

headers = (''
           '')

Дублирует кавычки + ставит скобки. Кто знает как убрать?


Ответы (1 шт):

Автор решения: MarianD

PyCharm старается помочь вам избежать ошибок:

  1. Почему ставит скобки?

    Потому, что в Питоне невозможно просто без упреждения разорвать то, что должно быть в одной строке кода, на 2 или более строк:

    while a < 2 and
          b > 5:             # неправильно — синтаксическая ошибка
    

    Но это возможно сделать с соответствующим сигналом интерпретатору Питона:

    • символом продолжения команды \:

      while a < 2 and   \
            b > 5:         # теперь правильно — то же самое как  while a < 2 and b > 5:
      

    или

    • тем, что затем не окончена начальная скобка (( или [ или {) — тогда Питон ждет ее окончания обратной скобкой () или ] или }):

      fruits = [апельсин,
                яблоко,
                ананас,
               ]            # правильно
      

      Значит, что в первом примере мы можем для продолжения команды использовать вместо символа продолжения \ излишние скобки:

      while (a < 2 and   
             b > 5):        # тоже правильно
      

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

  2. Почему дублирует кавычки / апострофы?

    Это не дублирование, а окончание первой части строки и подготовка на вторую.

    Объясню:

    В Питоне невозможно строку в кавычках или апострофах продолжать на следующей строке кода (для этого нужно применить тройку кавычек / апострофов:

    'Имя
    Отечество'               # не возможно — синтаксическая ошибка
    
    
    
    '''Имя
     Отечество'''            # правильно
    

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

    Для этого он использует синтаксис для соединения строковых литералов в одну строку тем, что они просто запишутся возле себя:

    'Какая '   'красивая '   'девушка'     # то же самое как 'Какая красивая девушка'
    

    Вы пока после апострофа ничего не написали — значит, вы хотите продолжить пустую строку.

    Для того PyCharm окончит вашу пустую строку апострофом (т.е. сделает то, что вы назвали «дублированием кавычки») и в следующей строке кода для вас приготовит новую пару кавычек с курсором между ними, чтобы вы сразу могли писать продолжение вашей (пустой) строки:

    headers = (''
               '')
    

Примечание:

Представите себе, что PyCharm бы этого не сделал и ваш код бы выглядел так, как вы хотели:

headers = '
          что-то бы вы здесь, вероятно, написали'

И затем (может быть) вы бы здесь, на Stack Overflow на русском, поставили вопрос
«Почему мой код выдает ошибку?» ;-)

→ Ссылка