我想做点什么:
def get_foo():
return self._foo or self._foo = Bar()
Run Code Online (Sandbox Code Playgroud)
我正在寻找最干净的方法.是等于或等于?
我的尝试失败了:
>>> foo = None
>>> foo or 'bar'
'bar'
>>> foo
>>> foo or foo = 'bar'
File "<stdin>", line 1
SyntaxError: can't assign to operator
>>> foo or (foo = 'bar')
File "<stdin>", line 1
foo or (foo = 'bar')
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
在Python中,您不能在表达式中使用赋值.所以你必须return在两个不同的行上完成赋值和声明:
def get_foo(self):
self._foo = self._foo or Bar()
return self._foo
Run Code Online (Sandbox Code Playgroud)
但总的来说,最好把它写出来:
def get_foo(self):
if not self._foo:
self._foo = Bar()
return self._foo
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3733 次 |
| 最近记录: |