Почему ошибка: SyntaxError: f-string: mismatched '(', '{' или '[' в блоке кода возникает в Python? - PullRequest
0 голосов
/ 09 марта 2020

Я попытался создать класс Person, и во время печати с использованием f-строк появилось SyntaxError. Знаете ли вы, почему?

class Person:
  def __init__(self, age, firstName, lastName='', hobbies=None):
    self.age = age
    self.firstName = firstName
    self.lastName = lastName
    self.hobbies = hobbies

  def printDescription():
    firstPart = f'My name is {self.firstName + {' ' if self.lastName != '' else ''} + self.lastName} and I am {self.age}'
    secondPart = f', also I like {self.hobbies}' if self.hobbies else ''
    print(firstPart + secondPart)

me = Person.__init__(me, 500†, 'Ken', 'Tran', 'programming')

me.printDescription()

SyntaxError: f-string: mismatched '(', '{' или '['

Кто-нибудь знает, почему это что-то происходит?

1 Ответ

2 голосов
/ 09 марта 2020

Поскольку вы используете ' в качестве разделителей f-строки, ' после { завершит строку, что приведет к несогласованному {. Используйте разные разделители вокруг строки и для строк, которые находятся внутри.

Кроме того, нет необходимости использовать {} внутри {}. Это создаст объект set. Используйте () для группировки.

firstPart = f"My name is {self.firstName + (' ' if self.lastName != '' else '') + self.lastName} and I am {self.age}"
...