2015-10-15 4 views
4

В учебнике я обнаружил следующую функцию. Когда я вызываю функцию, "This prints a passed string into this function" не печатается. Почему функция не печатает эту часть текста при вызове?Почему строка не была напечатана в верхней части этой функции?

def printme(str): 
    "This prints a passed string into this function" 
    print str 
    return 

# Now you can call printme function 
printme("I'm first call to user defined function!") 
printme("Again second call to the same function") 
+4

Поскольку строка не является 'print'ed. –

+0

Я получаю это, но при использовании python как обычно в терминале, если я набираю «hello», возвращается «hello»? Используется ли это конкретное различие? – user2713650

+0

Это потому, что IDLE имеет другое поведение от фактического запуска скрипта. –

ответ

10

Что вы видите, есть строка документа, или docstring в общем.

Docstring - это строка, которая должна документировать предмет, к которому он прикреплен. В вашем случае он привязан к функции, и как таковой предполагается документировать функцию. У вас также могут быть docstrings для классов и модулей.

Вы создаете docstrings, просто поместив строку самостоятельно, как самое первое в функции (или классе или модуле). Переводчик будет затем использовать его как строку документации и сделать его доступным в специальном в __doc__ атрибута:

>>> def printme(str): 
     "This prints a passed string into this function" 
     print str 

>>> printme.__doc__ 
'This prints a passed string into this function' 

Строки документации также используются help() функции:

>>> help(printme) 
Help on function printme in module __main__: 

printme(str) 
    This prints a passed string into this function 

обычная практика для строк документации, чтобы сделать ясно, что они должны быть фактическими документами, а не просто неуместными «правильными» строками, заключается в использовании тройных котировок. Тройные кавычки используются для создания многострочных строковых, которые в дополнение позволяет быть строки документации многострочный тоже:

def printme (str): 
    ''' 
    Print the string passed in the `str` argument to the 
    standard output. This is essentially just a wrapper 
    around Python’s built-in `print`. 
    ''' 
    print(str) 

Различные конвенции строку документации, также описаны в PEP 257.

5

Выполнение выполнено, однако оценка и никогда не используя строку эффективно не работают. Причина, по которой он работает в REPL, - это RELC - RE P L, то есть прочитанный eval print loop. Шаг печати не выполняется при обычном выполнении.

+0

Право, которое делает много смысла, спасибо! – user2713650

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

  • Нет связанных вопросов^_^