在 __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 错误的主要内容,如果未能解决你的问题,请参考以下文章

Python中的__str__()方法和__repr__()方法

__repr__() 函数的最佳输出类型和编码实践?

如何为函数本身设置 repr? [复制]

python3.x __str__与__repr__

可以在python中更改函数的repr吗?

Python中__str__和__repr__的区别