2017-07-03 17 views
0

私は以下の機能を持っていますが、dataのように、foo(-1)を実行する前にアクセスするとエラーになります。私はNoneを返すことを望みます。そのうちの1つが条件付きである関数から多くの値を返すことができます。私はif elif構成でリターンを書いたくありません。変数が存在する場合、それを返す方法

def foo(x): 
    if x > 1: 
     data = range(0,10) 
    elif x < 0: 
     print 'not valid' 

    return 1, 2, 3, data or None 

開始時にデータを定義する他の方法はありますか?それはなしいない場合は、リストの内包表記か何か

+2

'x == 0'の場合はどうなりますか? –

+0

ランダムな関数を書こうとしたところ – canonball

+0

locals(): 'で 'if if data'がチェックされ、データがローカル変数であるかどうかを調べることができます。しかし、関数の先頭でデータを初期化することが望ましいです。 –

答えて

2

を使用してreturn 1, 2, 3, [data if data]ような何かが、関数の先頭にデータを定義し、return文は、予想通りなしを返しません。

def foo(x): 
    data = None 
    if x > 1: 
     data = range(0,10) 
    elif x < 0: 
     print 'not valid' 

    return 1, 2, 3, data 
0

あなたは、xが1より大きくない場合、xが1よりも大きい場合にのみ、そのデータが初期化されていないデータを初期化していますが、それを返すようにしてみてください。最初にデータを配置する必要があります。

def foo(x): 
    data = None 
    if x > 1: 
     data = range(0,10) 
    elif x < 0: 
     print 'not valid' 

    return 1, 2, 3, data 
関連する問題