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

为什么在python中修改本地人不是个好主意?

芮立果
2023-03-14
问题内容

文档在这里。_

文档提到字典不应该改变,不确定它是什么意思,但是将locals()适用于数据不会改变的实验室报告,例如在测量中?


问题答案:

修改是一个坏主意,因为文档(您链接到该文档)明确指出不要:

注意: 此字典的内容不得修改;更改可能不会影响解释器使用的局部变量和自由变量的值。

您不需要任何其他理由。

如果您以不修改任何变量的方式使用它,那么您会没事的,但是我会质疑设计,看看是否有更好的方法来做您想要的事情。

在链接的特定示例中,当您在模块的全局范围内使用locals时,locals实际上是globals()。这种非常特定的用法现在可以使用,尽管我希望它可以像使用全局变量一样继续使用,但是您最好也使用全局变量。

甚至在不了解设计其余部分的情况下,更干净的解决方案是对变量使用常规的ol’字典。然后使用data [“ x”] = value而不是globals()[“x”] = value。



 类似资料:
  • 问题内容: eval函数是一种动态生成代码的强大而简便的方法,那么有哪些警告? 问题答案: 错误使用 eval会 打开代码以进行注入攻击 调试 可能会更具挑战性(没有行号等) 评估的代码执行速度较慢(没有机会编译/缓存评估的代码) 编辑:正如@Jeff Walden在评论中指出的那样,今天#3的真实性要低于2008年。但是,尽管可能会缓存一些已编译脚本,但这只会限于未经修改就重复的脚本。更有可能的

  • 问题内容: 从设计的角度来看,线程局部变量本质上是全局变量,并且受全局变量通常带来的所有可移植性和可预测性问题困扰。 更重要的是,从安全性的角度来看,线程本地构成了巨大的风险。通过提供公开其他线程状态的数据存储,可以为Web服务器中的一个线程提供一种潜在地修改系统中另一个线程的状态的方法。如果threadlocal数据包含用户的描述或其他与身份验证相关的数据,则该数据可用作授予未授权用户访问权限或

  • 问题内容: 说,如果我在Docker容器中使用此命令。 这里的本地主机指的是什么?主机的IP还是Docker容器自己的IP? 问题答案: 从容器内部开始 ,始终引用当前容器。它永远不会引用另一个容器,也永远不会引用物理系统中运行的不在同一容器中的任何其他内容。建立与数据库主机的出站连接或将其配置为数据库主机通常没有用。 从主机系统上的Shell中 ,可以指代在Docker之外的系统上运行的守护程序

  • 问题内容: 该代码非常有用: 但是这段代码 不起作用 : 它引发此错误: ZMQError:没有这样的设备 为什么,zeromq无法使用localhost接口? 它只能在同一台计算机上的IPC上运行吗? 问题答案: 问题在于: 尝试更改为:

  • 问题内容: 建议不要中使用。 可以分享原因,以便下次避免这样做吗? 问题答案: 因为它将很多东西放到你的命名空间中(可能会遮盖以前导入的其他对象,你对此一无所知)。 因为你不完全知道要导入的内容,而且不容易找到从哪个模块导入的特定内容(可读性)。 因为你不能使用像静态检测代码中的错误之类的出色工具。

  • 问题内容: 我正在编写一个脚本,该脚本应该在一堆服务器周围运行,并从其中选择一堆数据,包括本地服务器。选择所需数据的SQL非常复杂,因此我正在编写临时视图,并使用OPENQUERY语句获取数据,因此最终我最终循环了如下语句: 但是,我听说在本地服务器上使用OPENQUERY是一种皱眉。有人能详细说明为什么吗? 问题答案: 尽管查询可能返回多个结果集,但OPENQUERY仅返回第一个结果集。 OPE