首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:打印函数调用和命名空间

Python:打印函数调用和命名空间
EN

Stack Overflow用户
提问于 2012-10-30 01:27:50
回答 2查看 235关注 0票数 1

出于调试目的,我想知道是否可以在导入之后查看正在操作的名称空间和模块,并进一步查看函数被调用的位置。

如果我在我的代码中有一个函数f(x)和一个相当复杂的结构,有没有一种方法可以看到f(x)被调用的地方,而不是到处都是打印?

类似于f.print_occurance()

代码语言:javascript
复制
"f was called in function integrate"
"f was called in function linspace"
"f was called in function enumerate"

一些类似的东西来做这个。

至于第一个问题,假设我现在导入了一个模块“导入某些模块”,如果该模块导入了其他模块,我可以看到哪些名称空间和模块已经被导入/使用而不需要查找somemodule.py (或者它的头文件,如果它存在于c/cpp中)。

如果这是一个新手问题,很抱歉,这似乎是我应该知道的用于错误处理和调试的基本技巧,但谷歌搜索没有返回任何有用的信息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-30 01:44:09

您绝对应该看看tracebackinspect模块。

获取一种简单的方法:

代码语言:javascript
复制
traceback.print_stack(limit=2)

这将是丑陋的,但告诉您哪个函数正在被调用,以及是什么调用了它。您可以查看这些模块,了解如何使用它们来满足您的需求。

您可以使用sys.modules查看导入的模块

票数 1
EN

Stack Overflow用户

发布于 2012-10-30 01:39:08

您可以编写自己的f.print_occurence()属性。创建一个标记为'true‘的变量。当函数启动时,f.print_occurence()将识别该标记并相应地打印。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13126664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档