【发布时间】:2013-01-05 21:56:22
【问题描述】:
添加到rake 和PHP 的列表:有没有办法测试Python 函数或方法是否已直接从Python shell 调用,而不是从.py 脚本文件中调用?
例如我想定义一个表达式test_expr,当表达式出现在模块“shelltest.py”中时,其行为如下,
#!/usr/bin/python
"""Module shelltest.py"""
def test_expr():
#...
案例 (1):当直接从 shell 调用时,它产生 True
>>> import shelltest
>>> shelltest.test_expr()
True
案例(2):当导入另一个模块“other.py”并在那里的代码中使用时,它会产生False
#!/usr/bin/python
"""Module other.py"""
import shelltest
def other_func():
# ...
shelltest.test_expr()
反过来又从 shell 调用
>>> import other
>>> other.other_func()
False
【问题讨论】:
-
您能否澄清一下您是在谈论在交互式 shell 中运行东西还是从文件中运行东西,还是在谈论运行东西而不是
import? -
一般来说,在Python中,你可以自省一切,找出各种各样的东西。但是,无论您根据这些信息在函数中做些什么不同的事情,您可能都不应该这样做。它会使函数变得神奇,因此令人惊讶和困惑。
-
也许如果您详细说明了您将如何处理这些信息,我们可以帮助您找到一个好的解决方案。
-
感谢您的澄清。这将很难实现,并且会让您的用户感到困惑。你能解释一下你为什么想要这个以及你会用它做什么吗?可能有更好的方法。
-
@raxacoricofallapatorius:这是个坏主意。异常是 Python 生态系统的真实组成部分,像这样试图通过魔法隐藏它们只会让事情变得困难。改为做简单的事情:让错误像已经打印的那样打印。如果您不喜欢交互式提示显示错误的方式,请查看
sys.excepthook。