2016-11-01 6 views
0

関数がNoneを返すケースを処理する最適な方法は何ですか?例:関数が返されるときに例外を処理する適切な方法なし

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

my_var = my_function() 

my_varがNoneで特定の値に設定されている場合、例外を発生させます。そうですね、

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

意味はありますか?

+1

:?

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

またはより良いですか – 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は 'DEFAULT_VALUE' に等しくなり、

var = my_function() or '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 

そして、このようにそれを呼び出す:なぜ代わりなしの "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

また、空リストなどもfalseであるため、 'default_value'を返します。 – roganjosh

関連する問題