当前位置: 首页 > 面试题库 >

从Python中调用名称空间获取本地人

姜凯风
2023-03-14
问题内容

我想从一个调用函数中从Python检索局部变量。有什么办法吗?我意识到这不适用于大多数编程,但是我基本上是在构建调试器。例如:

def show_locals():
  # put something in here that shows local_1.

local_1 = 123
show_locals()  # I want this to show local_1.

我要放什么show_locals呢?如果必须修改调用语句,可以做的最小修改是什么?

注意:show_locals在与调用者不同的模块中,这必须起作用。


问题答案:

如果要编写调试器,则需要大量使用该inspect模块:

def show_callers_locals():
    """Print the local variables in the caller's frame."""
    import inspect
    frame = inspect.currentframe()
    try:
        print(frame.f_back.f_locals)
    finally:
        del frame


 类似资料:
  • 是否有一种使用JAXB从非根元素以编程方式获取名称空间的方法? 我可以在根元素上使用以下内容(其中DetailedReport是根元素对象): 但是,如果我尝试使用来自同一个包的类型,但不是根元素,qname为null。 根据JAXBIntrospector的javadocs: 参数对象是以下情况的JAXB元素: 它是javax.xml.bind.JAXBElement的实例,object的类用@

  • 我有一个关于ES6导入模块的问题。 我试图在我的Three.js代码中添加OrbitControl。由于OrbitControls是一个单独的模块,我需要在我的代码中分别导入它们,如下所示。它工作得很好。 然而 我首先想到的是 原因是, 据我所知,如果模块将某些内容导出为导出默认值, 我可以通过在“导入”代码中添加花括号来访问它们。 但是,它没有起作用,因此我假设“三个orbitcontrols”

  • 问题内容: 我正在尝试获取当前正在运行的Python脚本的名称。 我有一个名为的脚本,我想做这样的事情以获得脚本名称: 问题答案: 您可以使用获取当前文件的名称。在主模块中使用时,这是最初调用的脚本的名称。 如果要省略目录部分(可能存在),可以使用。

  • 问题内容: 假设有一个文件夹“ / home / user / temp/a40bd22344”。名称是完全随机的,并且在每次迭代中都会更改。我需要能够使用固定名称(例如“ project”)在Python中导入此文件夹。我知道我可以将此文件夹添加到sys.path中以启用导入查找,但是有没有一种方法可以将“a40bd22344”替换为“项目”? 也许 init .py有一些聪明的技巧? 添加:

  • 问题内容: 我正在尝试获取证书颁发者信息(通用名称),但是链接中的代码不适用于某些URL。 例如,我尝试使用主机名“ cds.ca”,它说 但我仍然可以使用Internet Explorer(* .cds.ca)来获得通用名称 所以我认为我应该使用自己的证书(.cer)而不是使用getpeercert(),那么我应该如何更改该行? 或者,还有其他方法可以使用我自己的证书文件来实现CN吗? 问题答案

  • 在OpenFOAM中,存在一个函数,其名称为exp,表示数学中的幂操作。同时,C++本身也可以进行这个计算,并且函数名称也为exp。这会导致调用的时候,编译器并不知道应该调用OpenFOAM的exp还是C++本身的exp。一种方法是将其中一个exp函数进行改名,比如将OpenFOAM中的exp改成expFoam。但还有更简单的方式。 名称空间专门用于解决上面的问题,它可作为附加信息来区分不同库中相