2016-11-01 59 views
0

处理函数返回None的情况的最佳方法是什么?例如:函数返回时处理异常的正确方法无

def my_function(): 
    if <some_stuff_works>: 
     return <stuff> 
    else: 
     return None 

my_var = my_function() 

我想要做的是引发一个异常,如果my_var是无,然后设置为一定的值。所以像这样:

try: 
    my_var = my_function() 
except ValueIsEmpty: 
    my_var = "EMPTY" 

这有道理吗?

+1

为什么不返回,而不是无 “空”? – CAB

回答

3

如果您无法修改该功能,则无需提出创意例外情况:只需检查它是否为None并为其指定适当的值即可。

my_var = my_function() 
if my_var is None: 
    my_var = 'default_value' 
1

既然你想使用例外,试试这个;

def my_function(): 
    if <some_stuff_works>: 
     return <stuff> 
    raise ValueError 

try: 
    my_var = my_function() 
except ValueError: 
    my_var = "EMPTY" 
0

你可以这样做:

var = my_function() or 'default_value' 

但是,var将等于 'DEFAULT_VALUE' 当my_function返回

  • None(你想要的)
  • False
  • 0
  • 空单[](感谢@roganjosh)

由你来选择你想要的东西。如果你不这样做,@ brianpck的答案仍然是最好的答案。

您还可以使该功能引发异常,而不是返回None

def my_function(): 
    if <some_stuff_works>: 
     return <stuff> 
    else: 
     raise SomeException # maybe TypeError, whatever 

然后调用它像这样:

try: 
    result = my_function() 
except SomeException: 
    result = 'EMPTY' 

甚至更​​好:

def my_function(): 
    if <some_stuff_works>: 
     return <stuff> 
    # no need for the else because return end up the function execution. 
    # so if it returns <stuff>, it will stop, and not look further 
    return 'EMPTY' 
+0

空列表等会返回'default_value',因为它们也是错误的。 – roganjosh