动态名称解析

发布于 2024-10-13 19:40:19 字数 618 浏览 3 评论 0原文

PHP 和 Python 等某些语言为何使用动态名称解析

我唯一一次想到使用它是做类似这个 Python 代码的事情,这样我就不必显式地将参数设置为 format

"{a} {b} {c} {d}".format(**locals())

但实际上并不需要太多工作就可以了显式(并且不太容易出错):

"{a} {b} {c} {d}".format(a=a, b=b, c=c, d=d)

为了在同一范围内设置/获取局部变量,我不明白为什么有人会使用它而不是地图。

如果没有动态名称解析,拼写错误就会被捕获,并且您可以自动重命名变量而不会破坏程序(除非某些东西仍然可以读取变量的名称)。通过动态名称解析,您可以获得一些可以让您免于键入一行的东西吗?我错过了什么吗?

Python 文档称他们将来可能会删除它。是不是更具有历史意义?动态名称解析的实际良好用例是什么?

Howcome some languages like PHP and Python use dynamic name resolution?

The only time I've ever thought of using it is to do something like this Python code, to save me from having to explicitly parameters to format:

"{a} {b} {c} {d}".format(**locals())

but it doesn't really take much work to just be explicit (and is a bit less error-prone):

"{a} {b} {c} {d}".format(a=a, b=b, c=c, d=d)

And for setting/getting locals in the same scope, I don't see why anyone would ever use that instead of a map.

Without dynamic name resolution, typos are caught, and you can automatically rename variables without breaking your program (unless something can still read the names of the variables). With dynamic name resolution, you get something that saves you from typing a line? Am I missing something?

Python documentation says they might remove it in the future. Is it more of a historical thing? What's an actual good use case for dynamic name resolution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

哀由 2024-10-20 19:40:19

大多数动态类型语言根本没有选择。对于像 xy 这样的表达式,您无法静态查找 y,因为哪些字段可用取决于仅可用的 x 的类型在运行时。

有很多方法可以解决这个问题(例如类型推断或 JIT),但由于基本语言必须具有动态名称查找功能,因此大多数此类语言将其纳入功能(例如参见 Lua 表的强大功能) 。

Most dynamically typed languages simply don't have a choice. For an expression like x.y you can't look up y statically, since what fields are available depends on the type of x which is only available at runtime.

There are ways around this (such as type inference or JIT), but since the base language has to have dynamic name lookup, most such languages make it into a feature (see e.g. the power of Lua tables).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文