2014-01-17 4 views
3
def white(): 
    print 
print ("First line") 
white() 
print ("Second line") 

Это один из моих первых сценариев. Когда я нажимаю клавишу «F5», это результат:Функция не печатает ожидаемый результат

First line 
Second line 

Где ошибка?

+5

Ваш 'white' метод не делает ничего ... – Basic

+0

если' def' не работает, вы будете получать NameError, потому что вы ничего не определили. : P – geoffspear

+0

Это действительно нормально, что вы учитесь, но сначала попробуйте использовать Google (там действительно хорошие учебники: http://www.learnpython.org/) – Alvaro

ответ

0

Если вы хотите, чтобы ваш метод white() печатал пробелы, вам нужно, чтобы оператор печати на линии два выглядел следующим образом: print(" "). Вызов print без аргументов ничего не сделает.

+0

Дело в том, что 'print' в Python 3 не является ** заявлением **, а является ** функцией **. –

8

Вы используете Python 3, в котором print является функцией. В Python 2 print это утверждение, и ваш код будет вести себя так, как вы ожидаете.

Эта линия:

print 

не вызывает функцию. Он просто ищет имя print. И это не приводит к тому, что на устройстве вывода ничего нет.

Вы, вероятно хотел написать что-то вроде этого, что на самом деле вызывает функцию:

def white(): 
    print() 

print ("First line") 
white() 
print ("Second line") 

Выход

 
First line 

Second line 
1

Если вы используете Python 3, то «печать» является функцией, а не заявление. Чтобы напечатать строку, вам нужно на самом деле позвонить ей.

def white(): 
    print() 
3

В Python 2 white() печатает новую строку, в то время как в Python 3 это не так.

$ python2 /tmp/white.py 
First line 

Second line 
$ python3 /tmp/white.py 
First line 
Second line 

Поведение print изменилось между Python 2 и Python 3. В Python 2 print является ключевым словом, и писать просто print печатает новую строку.

В Python 3 print является функцией и требует скобок. Если вы пишете только print, то у вас есть инструкция, которая просто извлекает функцию print, но не вызывает ее, поэтому ничего не происходит. Чтобы получить пустую строку, вам нужно вызова это:

def white(): 
    print() 
print ("First line") 
white() 
print ("Second line") 
Смежные вопросы