2014-09-02 4 views
-4

У меня есть следующие функции:Почему python возвращает None object?

def isEmptyRet(self, cmdr, overIterate): 
    //some code which changes the cmdr object 
    if (some condition): 
    //some code 
    else: 
    print("got to this point") 
    print(cmdr) 
    return cmdr 

Консоль печатает следующие:

got to this point 
{'ap': {'file 
    //and some other parameters in JSON 
    }}} 

Эта функция вызывается с помощью следующей функции:

def mod(self, tg): 
    //some code 
    cmdr = self.local_client.cmd(
      tg, func 
    ) 
    //some code.. 
    cmdr = self.isEmptyRet(cmdr, False) 
    print(cmdr) 

Теперь консоли печати: None

Но функция isEmptyRet объект возврата, который не является ничем (как мы видим на консоли).

В чем причина?

+0

Нет, он возвращает только что-то, если он находится в 'else' блока. Предположительно, у вас нет оператора return в блоке 'if'. –

+0

Печатает ли «до этого»? – Don

+0

@Don Да, он печатает .. –

ответ

-3

В вашем коде, если поток выполнения входит в isEmptyRet, а в if оператор будет вычислять значение true, а затем возвращать функцию None по умолчанию.

0

Если у вас есть функция, которая явно не возвращает значение во время выполнения, возвращается значение None. В качестве примера

def fun(x): 
    if x < 10: 
     # Do some stuff 
     x = x + 10 
     # Missing return so None is returned 
    else: 
     return ['test', 'some other data', x] 

print(fun(1)) 
print(fun(11)) 

Выход консоли будет:

None 
['test', 'some other data', 11] 

Причина в том, что при выполнении условия x < 10 выполняется не return утверждение, что запускается на выполнение и Python будет возвращать None для значения функция

Сравните с этим:

def fun(x): 
    if x < 10: 
     # Do some stuff 
     x = x + 10 
     # This time is x < 10 we use return to return a result 
     return ['test', 'some data', x * 5] 
    else: 
     return ['test', 'some other data', x] 

print(fun(1)) 
print(fun(11)) 

Выходной сигнал будет

['test', 'some data', 55] 
['test', 'some other data', 11] 
Смежные вопросы