我经常发现自己处于一种情况,需要检查是否为变量分配了某些内容,然后将其值与其他值进行比较。
当然,我知道该怎么做,但我想知道是否有更优雅的处理方式。
示例:
def function():
with suppress(SomeException):
variable = 10
if variable and variable > 5:
# do things
这将给我一个UnboundLocalError异常(在变量分配期间发生SomeException
的情况下)。同样,我知道如何编码,因此它将起作用,这是困扰我的编码风格。我想避免创建不必要的局部变量。
答案 0 :(得分:1)
您说您知道如何做,但是您发布的代码如果没有发生分配将抛出异常。
确实有一种简单的方法可以做到这一点:只是不要编写可能使变量未初始化的代码。
def function():
variable = None
if SomeCondition():
variable = 10
if variable is not None:
# do things
请注意,这不会创建任何不需要的局部变量,无论是否分配变量variable
都将被创建,但是如果您不分配变量,那么它将被初始化并测试是否已初始化意味着必须抛出并捕获异常,这很慢。简单地初始化它意味着您有一个简单的简单测试。停止尝试优化不需要优化的事物。