【问题标题】:EOF Error while using f-string in __repr__() function在 __repr__() 函数中使用 f 字符串时出现 EOF 错误
【发布时间】: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 中 {...} 块的末尾。
  • 另外,请参阅stackoverflow.com/questions/1984162/purpose-of-pythons-repr 了解__repr____str__ 应该返回的字符串类型。

标签: python string eof repr f-string


【解决方案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 语句的用法相似。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-03
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
  • 2020-01-19
  • 2020-11-27
  • 1970-01-01
相关资源
最近更新 更多