jjzjj

python - 导入模块(但不使用它)会降低 Python 的性能吗?

我正在使用Django运行一个网站,我在几乎所有脚本的开头都导入了ipdb以使调试更容易。但是,大多数时候我从不使用模块中的函数(仅在调试时使用)。只是想知道,这会降低我的表现吗?只是当我想创建一个断点时我更喜欢这样写:ipdb.set_trace()相对于:importipdb;ipdb.set_trace()但是我在几个地方看到了第二个例子,这让我想知道它是否更有效率......我只是不知道导入python模块与效率有何关系(假设您没有在脚本中使用模块方法)。 最佳答案 正如@wRAR提到的,加载一个模块可能意味着执行任意数量的

python - 如何单步执行 Python 表达式求值过程?

我想构建一个可视化调试器,帮助编程学生了解表达式求值是如何发生的(子表达式如何求值并用它们的值“替换”,类似于Excel中的表达式求值可视化器)。看起来您无法使用Python的pdb逐步完成此过程,因为其最精细的步骤粒度是代码行。是否有可能以某种方式单步执行Python字节码?任何其他想法如何实现这个目标?编辑:我需要一个可以构建在CPython标准库之上的轻量级解决方案。 最佳答案 我自己也有一个解决方案想法——我可以通过将所有(子)表达式包装在一个虚拟方法调用中来检测代码(或AST),它除了返回它的参数外什么都不做。例如。x=f

python - 我如何 Hook 通过 gud 发送到 pdb 的命令?

我已经开始在emacs23.3中通过gud使用pdb,我如何Hook从缓冲区发送到调试器的命令消息?我在下面写了与gdb一起使用的建议,以保留comint的环,但找不到Hookpdb的等效函数。我使用python-mode.el作为我的主要模式。谢谢。(defadvicegdb-send-item(beforegdb-save-historyfirstnilactivate)"writeinputringonquit"(if(equal(type-ofitem)'string);avoidproblemswith'unprintable'structuressenttothisfunc

python - 使用 python 调试器 (pdb) 时调试 cython 代码 (.pyx) - 最佳实践

我已阅读Cythondebugging,putabreakpoint,和https://groups.google.com/forum/#!topic/apam-python-users/6rsRwcCAms4想知道调试从python代码调用的cython代码时最好的工作流程是什么?理想情况下,我想在从我的IDE(pycharm)启动的python调试session期间进入.pyx文件,但似乎这是不可能的。pyx文件被cython化后,是否可以编译调试信息以便调试器介入?如果无法实现,有哪些替代方案(除了不使用cython!)?由于这个问题专门问如何单步进入cython代码,虽然它类似

python - 是否有免费的带有观察点的 python 调试器?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestionpdb和winpdb似乎都缺少这个(对我而言)必不可少的功能。我看到一些东西表明WingIDE有它,但我更喜欢免费的解决方案,如果我必须付费,我更愿意为比Wing更好的东西付费。

python - 为什么 pdb 不能访问包含异常的变量?

有时,我无法确定是什么时候或什么原因导致的,pdb不会帮助您编写如下代码:try:foo()exceptExceptionase:importpdb;pdb.set_trace()您最终会得到通常的提示,但尝试访问e将导致:(pdb)e***NameError:name'e'isnotdefined.当然不是所有时候都这样,在linux、windows、我的机器、我同事的机器上... 最佳答案 在Python3中,except..astarget语句的目标在套件退出时被清除。来自trystatementdocumentation:W

python - 有没有办法进入装饰函数,跳过装饰器代码

我有一个模块,它使用自定义装饰器装饰一些关键函数。用pdb调试这些函数通常有点痛苦,因为每次我进入装饰函数时,我首先必须单步调试装饰器代码本身。我当然可以将调试器设置为在我感兴趣的函数内中断,但作为关键函数,它们会从许多地方多次调用,所以我通常更喜欢在函数外开始调试。我试着用代码来说明它,但我不知道这是否有帮助:defi_dont_care_about_this(fn):@functiontools.wraps(fn)defwrapper(*args,**kwargs):returnfn(*args,**kwargs)returnwrapper@i_dont_care_about_th

在 macOS High Sierra 上找不到 Python 调试器 pdb

PythonDebuggingTools文档说Python调试器pdb是“所有Python安装的一部分”,但我在macOSHighSierra下找不到它:pdb:commandnotfound现在它应该作为macOS的正常部分安装吗? 最佳答案 没有名为pdb的命令,但您可以从shell调用pdb:python-mpdbyour_script.py您可以在itsdoc中阅读更多调用pdb的方法. 关于在macOSHighSierra上找不到Python调试器pdb,我们在StackOve

python - 如何从 PDB 导出变量?

想象以下场景:脚本从IPythonshell启动,并在断点处调用python调试器。此时可以使用PDB命令分析代码和变量。但通常情况下,变量的值需要更深入的研究。是否可以将变量的值导出到IPythonshell?我的具体用例:我与一个似乎没有正确值的相当大的numpy数组作斗争。我知道我可以从python调试器运行任何python命令,但是将变量的值保存在不同的断点并在IPythonshell中使用它们会很有帮助。我正在想象类似的东西ipdb>globalvar1;var1=varipdb>continue...ipdb>globalvar2;var2=varipdb>continue

python - "SyntaxError: unexpected EOF while parsing"在 PDB 中迭代字典时

我在GET请求中设置了一个pdb跟踪。我想打印请求对象的所有属性。我在pdb中尝试以下操作:(Pdb)request(Pdb)fordindir(request):***SyntaxError:unexpectedEOFwhileparsing(,line1)我确定我在这里缺少一些基本的东西。 最佳答案 您不能在pdb中输入多行语句。不过,您可以使用commands命令如果要在断点处执行代码块;帮助命令获取更多信息。有时您也可以将多行语句折叠成一行。例如:fordindir(request):printd不过,在您的特定情况下,pr