Flask 语法 f-string 带单引号
Flask syntax f-string with single quotation mark
在 Flask 教程中,https://www.youtube.com/watch?v=cYWiDiIUxQc&list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH&index=4
有一个语法我想明白
return f"Post('{self.title}', '{self.dateposted}')"
谁能帮我分解一下这条线?
- f string 的意思是return 一个string
中Post()
的结果
'{self.title}'
是一个字符串参数,因为 ''
{}
用于获取一个变量。
- 但在上下文中
self.title
已经是一个字符串,为什么要使用 ' '
?
我的解释正确吗? ' '
在这里做什么?
我没有检查 link 但这只是 returns 一个可以分解成这个的字符串。
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()
。
在教程中他returns这个值用于class的__repr__
方法。
在对象上调用 repr()
时调用此方法。当您在 class 上使用 str()
或 print()
时,如果尚未为其实现 __str__
方法,也会调用它。
实施__repr__
方法的目的是为了帮助调试。
如果您尝试打印对象 而没有 定义 __repr__
,它会像 <Post object at 0x00000000>
一样打印出来,这没有帮助!
single-quotes是装饰用的,不是必须的
另请参阅:Difference between __str__ and __repr__?
您可能也有兴趣阅读 Luciano Ramalho 的 Fluent Python,因为它涵盖了这些方法并给出了如何使用它们的很好的例子(除了很多其他 Python 智慧)
在 Flask 教程中,https://www.youtube.com/watch?v=cYWiDiIUxQc&list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH&index=4 有一个语法我想明白
return f"Post('{self.title}', '{self.dateposted}')"
谁能帮我分解一下这条线?
- f string 的意思是return 一个string 中
'{self.title}'
是一个字符串参数,因为''
{}
用于获取一个变量。- 但在上下文中
self.title
已经是一个字符串,为什么要使用' '
? 我的解释正确吗?' '
在这里做什么?
Post()
的结果
我没有检查 link 但这只是 returns 一个可以分解成这个的字符串。
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()
。
在教程中他returns这个值用于class的__repr__
方法。
在对象上调用 repr()
时调用此方法。当您在 class 上使用 str()
或 print()
时,如果尚未为其实现 __str__
方法,也会调用它。
实施__repr__
方法的目的是为了帮助调试。
如果您尝试打印对象 而没有 定义 __repr__
,它会像 <Post object at 0x00000000>
一样打印出来,这没有帮助!
single-quotes是装饰用的,不是必须的
另请参阅:Difference between __str__ and __repr__?
您可能也有兴趣阅读 Luciano Ramalho 的 Fluent Python,因为它涵盖了这些方法并给出了如何使用它们的很好的例子(除了很多其他 Python 智慧)