为什么不打印此函数顶部的字符串?

时间:2015-10-15 19:21:41

标签: python docstring

我在教程中遇到了以下函数。当我调用该函数时,不会打印"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")

2 个答案:

答案 0 :(得分:10)

您看到的是文档字符串,或简称​​ docstring

docstring是一个字符串,用于记录它所附加的东西。在您的情况下,它附加到一个函数,因此应该记录该函数。您还可以拥有类和模块的文档字符串。

您可以通过简单地将字符串放在函数(或类或模块)中作为第一件事来创建文档字符串。然后,解释器将其用作文档字符串,并使其特殊地用于__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中也描述了各种文档字符串约定。

答案 1 :(得分:5)

它确实被执行了,但是评估和从不使用字符串实际上是一个无操作。它在REPL中工作的原因是REPL是RE P L,即read eval print 循环。普通执行中不存在打印步骤。