如何在 python 代码中利用 locals() ?

2023-12-28

我在阅读时偶然发现了以下警告像 Pythonista 一样编码:惯用的 Python http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html作者:大卫·古杰。

文章摘录...

print('Hello %(name)s, you have %(messages)i messages' % locals())

这是非常强大的。有了这个,你 可以完成所有的字符串格式化 想要而不用担心 将插值值匹配到 模板。

但权力也可能是危险的。 “力量越大,成就越大 责任。”如果您使用locals()从与 外部提供的模板字符串, 你暴露了你的整个本地命名空间 给来电者。这只是一些东西 要牢记。

我正在尝试理解具体场景其中使用locals()可能很危险。任何关于如何存在的例子locals()在代码中可以被利用是值得赞赏的。谢谢!


示例,简单的代码:

script_name = 'readpw.py'
...
entered_pw = raw_input()
if entered_pw != real_pw:
    print "%(script_name)s: The password you entered: "+entered_pw+" is incorrect."%locals()

考虑 Entered_pw 的情况%(real_pw)s

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 python 代码中利用 locals() ? 的相关文章

随机推荐

  • 使用 NSOpenGLLayer 从单独的线程中绘制

    我正在开发一个应用程序 它需要使用 OpenGL 进行绘制 刷新率至少等于显示器的刷新率 我需要在单独的线程中执行绘图 以便绘图永远不会被激烈的 UI 操作锁定 实际上我正在使用NSOpenGLView结合CVDisplayLink我可以毫
  • 未捕获的类型错误:无法读取未定义的属性“localStorage”

    我在backbonejs应用程序中有以下内容 MODEL var app app ledger Backbone Model extend COLLECTION app ledgerList Backbone Collection exte
  • 控件库的 WPF 样式

    我有一个图书馆 Styles DLL 其中包含带键的 WPF 集合Styles 我有一个班级图书馆 Module DLL 其中包含多个Windows and UserControls可以在各种应用程序之间共享 我用的是带键的Styles定义
  • Gensim:KeyError:“单词不在词汇表中”

    我有一个使用 Python 的 Gensim 库训练过的 Word2vec 模型 我有一个标记化列表 如下所示 词汇量为 34 但我只给出 34 中的几个 b let know buy someth featur mashabl might
  • 将不同长度的列表列表转换为numpy数组[重复]

    这个问题在这里已经有答案了 我有不同长度的列表列表 例如 1 2 3 4 5 6 7 8 9 并想将其转换为numpy整数数组 我理解 子 数组numpy多维数组的长度必须相同 那么 将上面示例中的列表转换为列表的最有效方法是什么 nump
  • 什么在实体中调用 setter?

    在实体框架中 您必须创建一个派生自的类DbContext具有 IDbSet 属性 实体框架中什么调用 setter 以及它是如何工作的 当您的自定义上下文类被实例化时 基类DbContext构造函数调用一个名为的私有方法Initialize
  • 为什么java hashCode()中经常使用XOR,而其他按位运算符却很少使用?

    我经常看到这样的代码 int hashCode return a b Why XOR 在所有位操作中 XOR 具有最好的位混洗属性 这个真值表解释了原因 A B AND 0 0 0 0 1 0 1 0 0 1 1 1 A B OR 0 0
  • Jackson - 结合 @JsonValue 和 @JsonSerialize

    我正在尝试组合 JsonValue and JsonSerialize 让我们从我当前的容器类开始 public class Container private final Map
  • javafx 移植应用程序性能不佳

    我刚刚使用 gradlew 将一个名为 PuzzlePieces 的示例 netbeans javafx 项目移植到 android 中 该应用程序的性能如此糟糕 是什么原因造成的 我的设备 LG E975 4 4 kitkat This
  • 无法转换类型的对象

    在我的 wpf 应用程序中尝试将字符串从一个窗口发送到另一个窗口时出现错误 无法将 WpfApplication4 LoginWindow 类型的对象强制转换为 WpfApplication4 MainWindow 类型 在我的登录窗口中
  • 如何在 jersey 2.0 中使用 hk2 注入常量?

    如何在球衣中使用 HK2 将常量注入某个类 有了Guice 我可以上一些像这样的课程 public class DependsOnFoo Inject public DependsOnFoo Named FOO String foo 我会在
  • python 中基于 websocket 的 MQTT

    python 是否支持通过端口 8080 订阅 mqtt 代理 import sys import paho mqtt client as mqtt def on connect mqttc obj flags rc print rc st
  • 访问图中重复访问次数最少的所有节点

    我有一个基于图块的地图 其中几个图块是墙壁 其他图块是可步行的 可步行的瓷砖构成了我想在路径规划中使用的图表 我的问题是他们有什么好的算法可以找到访问图中每个节点的路径 从而最大限度地减少重复访问吗 例如 地图示例http img220 i
  • app:srcCompat 不适用于 ImageView

    我正在向库项目添加矢量可绘制支持 并使用app srcCompat引用可绘制的矢量 唯一有效的视图是 ImageButton 我不知道为什么 这是我的 build gradle 的相关部分 android defaultConfig vec
  • 从另一台具有不同 Gradle 版本的 PC 导入 Android Studio 项目?

    我有一个用 Android Studio 版本 1 3 2 编写的 Android studio 项目 现在 在另一台装有 Android Studio 2 1 2 的 PC 上 我想导入或打开该项目 但是当我尝试打开时 我的 Gradle
  • 发送 XMLHttpRequest 时缓存结果出现问题?

    我对 AJAX 和缓存的想法很陌生 On the AJAX 向服务器发送请求 http www w3schools com ajax ajax xmlhttprequest send asp来自 W3Schools 它说你应该添加 t Ma
  • 为什么不允许 movl 从内存到内存?

    我想知道集会中是否允许这样做 movl edx eax 我猜它会访问第一个操作数中的内存并放入 第二个操作数的内存 例如 a b 但我还没有看到任何处理此类问题的示例 所以我猜这是不允许的 另外 我被告知这是不允许的 leal esi ed
  • 什么是 Git 修剪?

    我不小心修剪了一些远程分支 我真的不知道这样做的后果是什么 我单击了 Git 扩展中的 修剪远程分支 按钮 认为它会删除远程分支 官方文档说 git prune 从对象数据库中删除所有无法访问的对象 我实在不明白这是什么意思 我猜这可能会删
  • 需要帮助使用 Perl 修复此正则表达式代码吗?

    我需要您的专业帮助来使用 perl 修复此正则表达式代码 我有这个数据文件 Data SCSI test A ccccccccccccccccc aaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbb Data SCSI t
  • 如何在 python 代码中利用 locals() ?

    我在阅读时偶然发现了以下警告像 Pythonista 一样编码 惯用的 Python http python net goodger projects pycon 2007 idiomatic handout html作者 大卫 古杰 文章