就在最近,我遇到了一个非常奇怪的问题,我找不到任何决心。例如,如果我在解释器中运行以下代码
>>> def test():
... 'docstring'
... ...
...
>>> print(test.__doc__)
我得到了#docstring,'那里并不奇怪。现在如果我在* .py文件中运行它,我会得到None。
我尝试了多个具有相同结果的文件;但为什么解释器返回文档字符串而不是任何文件?任何帮助都肯定会受到赞赏。
注意:我已经尝试过三重引号,双重和单引号以及我可以集合的任何其他变体,但没有运气。
解决: 不知道究竟是怎么回事,但是我使用的命令已经被打破了#39;在那个shell实例中。现在工作正常
答案 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,那么这就是您的文档字符串消失的原因。