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

获取当前范围内所有变量及其值的字典

夏侯星洲
2023-03-14
问题内容

请考虑以下代码段:

globalVar = 25

def myfunc(paramVar):
    localVar = 30
    print "Vars: {globalVar}, {paramVar}, {localVar}!".format(**VARS_IN_SCOPE)

myfunc(123)

哪里VARS_IN_SCOPE是我追求的是将包含字典globalVarparamVar并且localVar,除其他事项外。

我希望基本上能够引用字符串中当前作用域内的所有变量。因此,预期输出为:

Vars: 25, 123, 30

我可以通过传递**dict(globals().items() + locals().items())给实现format()。这是否总是正确的,或者在某些极端情况下此表达式将无法正确处理?

重写以澄清问题。


问题答案:

在执行操作时合并两个字典的最佳方法是(将本地变量覆盖全局变量)dict(globals(), **locals())

缺少将全局变量和本地变量合并的方法是(a)内置函数(我想这是故意的,即您不认为内置函数是“变量”
…但是,如果您选择这样做的话,它们应该是!-),和(b)如果您在 嵌套 函数中,则是封闭函数本地的任何变量(没有一种很好的方法来获取包含所有
这些 变量的html" target="_blank">dict, 而且 -仅嵌套函数中显式访问的变量,即“免费变量”,无论如何都可以作为封闭物中的细胞生存)。

我想这些问题对您的预期用途并不重要,但是您确实提到了“拐角案例”
;-)。如果你需要覆盖它们,有办法让内置插件(这很容易)和(不那么容易)的所有单元格(从封闭函数的变量,你明确提到在嵌套函数-thefunction.func_code.co_freevars得到的名字,thefunction.func_closure以获取单元格,cell_contents在每个单元格上获取其值)。(但是,请记住,这些将只是来自在嵌套函数的代码中
显式访问的 包含函数的变量!)。



 类似资料:
  • 问题内容: 有没有办法获取所有当前在javascript范围内的变量? 问题答案: 否。“范围内”变量由“作用域链”确定,该变量无法通过编程方式访问。 有关详细信息(很多),请查看ECMAScript(JavaScript)规范。这是指向官方页面的链接,您可以在其中下载规范规范(PDF),而这是指向官方的可链接HTML版本的链接。 根据您对Camsoft的评论进行更新 事件函数作用 域中 的变量取

  • 问题内容: Spring-MVC中的所有控制器是否都是单例的,并且在不同的会话和请求之间共享? 如果是这样,我假设一个类变量像 所有请求和会话都一样吗?这样,如果用户X发出请求name并被设置为Paul,那么用户Z也具有Paul作为属性吗? 就我而言,我不希望这种行为,但想知道是否有更简单或更干净的OOP方式来拥有会话/请求变量,然后 问题答案: 要回答你的第一个问题:是的,Spring MVC控

  • 问题内容: 假设我们有一个变量: 使用该方法可以在训练过程中更新此变量。 获取变量当前值的最佳方法是什么? 我知道我们可以使用这个: 但是我担心这会触发整个操作链。 在Theano,您可以做 我正在TensorFlow中寻找相同的东西。 问题答案: 通常,将仅评估计算所需的节点,而不会评估其他节点,因此,如果要检查变量的值,它应该相对便宜。 看看这个很棒的答案http://codingdict.c

  • 问题内容: 假设我有一张Java地图,看起来像这样: 如果键按排序顺序(使用树图或链接哈希图)。现在,如果我尝试获取> = 39和<41的值。那么我应该获取字符串“ 39至41”。如何有效地执行此操作? 问题答案: 看起来您想要的不止一个; 你想要一个!具体来说,您可以使用该操作。 这是一个例子: 需要注意的是也有,,和也,而不是操作以及它返回而不只是。

  • 在包含所有数据的生产性系统上。 是否有一个(最好是cql)查询可以与给定的列族或de一起平稳运行,我们必须更改设计?

  • 我有来自Microsoft Azure数据中心(http://www.microsoft.com/en-us/download/confirmation.aspx?id=41653)的900个IP地址范围,我想知道IP地址是否来自其中一个地址。我已经把它转换成一个列表,可以存储在文本文件中。 所以:循环遍历每个地址并使用ip2long()如这里的第3点是否成本更高(https://mebsd.co