如何修复此无效语法错误

时间:2013-12-07 01:54:36

标签: python function class testing

我收到此代码的语法错误:

def __str__(self):
        s= 'Patron("'+self.name+'","'+self.patron_id+'","['+ \
        for book in self.borroweds:
            s+=str(book) + ', '
        if len(self.borroweds) != 0:
            s= s[:-2]
        s+='])' 
        return s



    for book in self.borroweds:
      ^
SyntaxError: invalid syntax
>>> 

我知道这是因为我有一个“\”但我把它放在那以便我可以继续编写我的代码

2 个答案:

答案 0 :(得分:2)

反斜杠表示该行未结束,因此您的代码完全等同于

s = 'Patron("'+self.name+'","'+self.patron_id+'","['+ for book in self.borroweds:

for关键字处给出了语法错误,因为Python正在寻找一个表达式,该表达式在那里求值为一个字符串。你应该取出+和反斜杠。您似乎很乐意简单地按如下方式初始化s

s = 'Patron("'+self.name+'","'+self.patron_id+'","['

然后让代码的后续行添加到字符串s

有关Python程序的行结构的详细信息,包括显式和隐式行连接的含义以及如何考虑反斜杠字符,请参阅this section of the Python reference manual

答案 1 :(得分:0)

def __str__(self):
    books = ', '.join(self.borroweds)
    return 'Patron("{name}", "{id}", [{books}])'.format(name=self.name, id=self.patron_id, books=books)
相关问题