2015-04-16 5 views
-3

Как вы знаете, в python, когда вы определяете функцию, вы должны положить return в код для завершения функции. В коде, как показано ниже, как я могу закончить функцию:Как я могу закончить функцию в python без использования (return)?

def f(x) : 
    if x == 0: 
     print 'yes' 
    print 'no' 

print f(2) 

, когда я запускаю этот код в последней строке после печати не будут None появились?

+5

* "Как вы знаете, в питоне, когда вы определяете функцию, вы должны положить 'return' в код для завершения функции. * * - Нет, это неточно. – jonrsharpe

+0

@ jonrsharpe: Может быть, это точно, что некоторые читатели знают, что эти читатели ошибаются. :) – abarnert

ответ

6

Вам не нужно заканчивать функцию, если интерпретатор попадает в строку, которая не находится в ожидаемом отступе, функция «автоматически завершается». Но вы пытаетесь напечатать возвращаемое значение f(2). Но f действительно возвращает None. Итак, вы печатаете None. Не печатайте функцию, а вызывайте только функцию: f(2).

Вызов f(0) будет еще дать вам no yes, потому что вы не остановить выполнение после проверяется на 0. Используйте else п или использовать return:

def f(x) : 
    if x == 0: 
     print 'yes' 
    else: 
     print 'no' 

f(2) 
-2

красота Python является то, что он просит вас формат кода. Для чего требуется использование правильного углубления. Все, что вам нужно сделать, это:

def f(x) : 
     if x == 0: 
      print 'yes' 
     else: 
      print 'no' 
    f(3) 
+3

Как это связано с вопросом OPs? – myaut

+4

Код OP был правильно отступом. Ваш код вызывает «IndentationError». Это не кажется мне очень хорошим решением. – abarnert

+0

@abarnert Это было больше проблем в formtting в SO, чем в коде. Я отредактировал его. – Volatil3

6

Кажется, что вопрос не подходит вашей проблеме.

Если вы

print f(2) 

он печатает независимо функция возвращает. В вашем случае функция возвращает «ничего», поэтому она неявно возвращает None - которая затем печатается по запросу.

Я вижу два решения:

  1. Не печатать то, что вы не хотите:

    def f(x) : 
        if x == 0: 
         print 'yes' 
        else: 
         print 'no' 
    
    f(2) 
    
  2. Возвращение что-то полезное, если вы хотите, чтобы абонент напечатать, что:

    def f(x) : 
        if x == 0: 
         return 'yes' 
        return 'no' 
    
    print f(2) 
    
0

Поскольку вы являетесь pr inting возвращение функции и вы не возвращаете вещь, и она печатает None Вы должны назвать его просто имеют внутреннюю печать, которая печатает то, что вы хотите print.

Смежные вопросы