如果满足特定条件,我有一些代码可以创建变量:
if self.left:
left_count = self.left.isUnivalTree()
几行代码如下:
if left_count and right_count:
total_count = right_count + left_count
这将引发以下错误:
local variable 'left_count' referenced before assignment
我该如何解决?肯定地说出if left_count...
我认为事实可能并非如此
(通过为函数中的所有参数设置默认值可以解决此错误,但我只是想知道是否有更简单的方法,因为我需要为5个参数设置默认值?)
答案 0 :(得分:1)
如果self.left
不是True
,则没有分配,请尝试以下操作,将默认设置为None
:
left_count = self.left.isUnivalTree() if self.left else None
根据您的问题更新,最好在函数上设置默认参数,这正是它们的用途。
答案 1 :(得分:1)
代替:
left_count = False
if self.left: left_count = self.left.isUnivalTree()
只需使用and
的短路行为:
left_count = self.left and self.left.isUnivalTree()
答案 2 :(得分:1)
如果isUnivalTree
返回布尔值(由于名称的原因,它应该是):
left_count = self.left and self.left.isUnivalTree()
否则:
left_count = self.left.isUnivalTree() if self.left else None
答案 3 :(得分:0)
或捕获到NameError
ERROR: Complete output from command python setup.py egg_info:
ERROR: Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/c8/w7fqpxvn2jb8gpfd3n55h2040000gn/T/pip-install-6kq682mb/mutagen/setup.py", line 29
except EnvironmentError, err:
^
SyntaxError: invalid syntax
----------------------------------------
ERROR: Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/c8/w7fqpxvn2jb8gpfd3n55h2040000gn/T/pip-install-6kq682mb/mutagen/
或检查是否已定义:
struct a
{
std::vector<int> i{ 10, 20, 30, 40 };
};
int main()
{
a *i = // allocate
*i = a(); // calls ctor, calls copy operator, calls dtor
// in principle.
}
这一切都取决于最适合您的工作流程