使用赋值作为运算符

Alw*_*ing 6 python

考虑:

course_db = Course(title='Databases')
course_db.save()
Run Code Online (Sandbox Code Playgroud)

来自 C++ 背景,我希望(course_db = Course(title='Databases'))表现得像 C++ 中的那样,即分配Course(title='Databases')course_db 返回分配的对象,以便我可以将其用作更大表达式的一部分。例如,我希望以下代码与上面的代码执行相同的操作:

(course_db = Course(title='Databases')).save()
Run Code Online (Sandbox Code Playgroud)

这一假设得到了一些使用“Python 中的赋值运算符”等术语的快速 Google 搜索的支持,例如这篇文章。但是当我尝试这个时,我遇到了语法错误。

为什么我不能在 Python 中执行此操作,我可以做什么?

iti*_*oej 6

您应该对 Python 中的语句表达式之间的差异进行更多研究。

如果您使用的是Python 3.8+,则可以使用:=运算符

In [1]: class A:
   ...:     def save(self):
   ...:         return 1
   ...: 

In [2]: (a := A()).save()
Out[2]: 1

In [3]: a
Out[3]: <__main__.A at 0x7f074e2ddaf0>
Run Code Online (Sandbox Code Playgroud)

  • @AlwaysLearning 这最初并不是 Python 的预期功能,这样做的原因可能是不允许编写这样的代码,因为它往往会使代码看起来不太可读。甚至“:=”在 Python 社区中也没有得到足够的鼓励 (4认同)