如何解决带单引号的烧瓶语法f字符串
在Flask教程中,https://www.youtube.com/watch?v=cYWiDiIUxQc&list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH&index=4 我想了解一种语法
return f"Post('{self.title}','{self.dateposted}')"
有人可以帮我分解这行吗?
- f string表示以字符串形式返回
Post()
的结果 -
'{self.title}'
是一个字符串参数,因为使用''
-
{}
用于获取变量。 - 但是在
self.title
已经是字符串的情况下,为什么要使用' '
? 我的解释正确吗?' '
在这里做什么?
解决方法
在教程中,他为类的__repr__
方法返回此值。
在对象上调用repr()
时将调用此方法。如果尚未为其实现str()
方法,则在类上使用print()
或__str__
时也会调用它。
实现__repr__
方法的目的是帮助调试。
如果您尝试打印没有定义__repr__
的对象 ,它将像<Post object at 0x00000000>
一样打印出来,这无济于事!
单引号用于装饰,实际上并不是必须的。
另请参阅:Difference between __str__ and __repr__?
您可能也有兴趣阅读Luciano Ramalho的 Fluent Python ,因为它涵盖了这些方法并给出了如何使用它们的绝佳示例(除了很多其他Python智慧之外)>
,我没有检查链接,但这只是返回一个可以分解为该字符串的字符串。
return "Post('" + self.title + "','" + self.dateposted + "')"
返回的字符串我不知道怎么办,但是我认为它是在其他地方求值的。
但是f字符串所做的只是将变量或表达式嵌入到您的字符串中。
如果变量不是字符串,它将首先将其转换为字符串。
要分解您的示例,请使用fstring嵌入{}
中的所有内容。
由于'
是单引号,且在花括号之外,因此它们也是字符串的一部分。
可以说self.title
等于"My Title"
,而self.dateposted
等于"08-22-2020"
。返回的字符串将导致
"Post('My Title','08-22-2020')"
如果您随后使用此字符串调用exec()
,它将使用2个位置字符串参数调用Post()
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。