Python __doc__返回无

时间:2016-01-22 05:21:53

标签: python python-3.x docstring

就在最近,我遇到了一个非常奇怪的问题,我找不到任何决心。例如,如果我在解释器中运行以下代码

>>> def test():
...     'docstring'
...     ...
... 
>>> print(test.__doc__)

我得到了#docstring,'那里并不奇怪。现在如果我在* .py文件中运行它,我会得到None。

我尝试了多个具有相同结果的文件;但为什么解释器返回文档字符串而不是任何文件?任何帮助都肯定会受到赞赏。

注意:我已经尝试过三重引号,双重和单引号以及我可以集合的任何其他变体,但没有运气。

解决: 不知道究竟是怎么回事,但是我使用的命令已经被打破了#39;在那个shell实例中。现在工作正常

1 个答案:

答案 0 :(得分:6)

如果您使用http://ip-A:8080开关运行解释器,则会删除文档字符串:

  

-OO除了-O优化之外,还放弃文档字符串。

这也可以由-OO环境变量控制:

  

PYTHONOPTIMIZE

     

如果将其设置为非空字符串,则等同于指定-O选项。如果设置为整数,则相当于   多次指定-O

因此,如果你有一个指定-OO的Python包装器,或者PYTHONOPTIMIZE被设置为说2,你就可以获得这种效果。

但是,此设置应该也适用于交互式解释器:

% PYTHONOPTIMIZE=2 python3
Python 3.4.3 (default, Oct 14 2015, 20:28:29) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> def foo():
...     'bar'
... 
>>> foo.__doc__
>>> 

您可以通过PYTHONOPTIMIZE

在运行时测试优化设置
% PYTHONOPTIMIZE=2 python3
Python 3.4.3 (default, Oct 14 2015, 20:28:29) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.flags.optimize
2

如果此数字大于或等于2,那么这就是您的文档字符串消失的原因。