在 __repr__() 函数中使用 f 字符串时出现 EOF 错误
Posted
技术标签:
【中文标题】在 __repr__() 函数中使用 f 字符串时出现 EOF 错误【英文标题】:EOF Error while using f-string in __repr__() function 【发布时间】:2019-04-30 10:59:32 【问题描述】:我正在使用 Python 3.x,我正在尝试从 __repr__
函数中获取 f 字符串以报告,但我似乎无法让以下格式化字符串以我的方式工作我期待它。
我经常收到“SyntaxError:解析时意外 EOF”
def __repr__(self):
return f"Player has 'Soft' if self.soft > 0 self.count. Cards are self.cards."
给出错误的部分是 'Soft' if self.soft > 0。如果不清楚,我正在尝试包含单词“Soft”IFF self.soft>0,如果没有,请不要在字符串中添加任何单词。
【问题讨论】:
公平地说,该错误消息非常具有误导性。解析器还没有到达文件的末尾(在任何实际意义上),而是 f-string 中...
块的末尾。
另外,请参阅***.com/questions/1984162/purpose-of-pythons-repr 了解__repr__
和__str__
应该返回的字符串类型。
【参考方案1】:
与if
语句不同,条件表达式中的else
关键字不是可选的:
def __repr__(self):
return f"Player has 'Soft' if self.soft > 0 else '' self.count. Cards are self.cards."
【讨论】:
太棒了。谢谢。 后续问题,“如果”是可选的是什么意思? 很高兴能提供帮助。我的意思是在if
语句中,else
块是可选的,但在条件表达式中,即使它也使用if
关键字,表达式的else
部分不是可选的。假设您省略了 else
关键字,只是因为您与 if
语句的用法相似。以上是关于在 __repr__() 函数中使用 f 字符串时出现 EOF 错误的主要内容,如果未能解决你的问题,请参考以下文章