C 中的变量存储在内存的什么位置?

发布于 2025-01-10 10:04:55 字数 1432 浏览 0 评论 0原文

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

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

发布评论

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

评论(1

情话墙 2025-01-17 10:04:55

由于Python中的一切都是对象,并且所有对象都可以分配给变量,因此无法创建不能分配给变量的无错误值。

然而,顺便说一句,存在永远不能分配给变量的表达式。人们可能会认为抛出错误的表达式属于此框,例如1/0,它会抛出 ZeroDivisionError:

>>> foo=1/0
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    foo=1/0
ZeroDivisionError: division by zero

实际上这些表达式可以在 try/ except 语句中捕获,例如下面的:

try:
  foo=1/0
except:
  pass

但 然而,故事还没有结束,因为存在导致 Python 解释器出现段错误的表达式。我所知道的最短的一个来自 Codegolf Stack Exchange:

exec((lambda:0).__code__.replace(co_consts=()))

即使在 try- except 语句中,它也总是会导致 python 解释器崩溃。

As everything in Python is an object, and all objects can be assigned to variables, one cannot create a non-erroring value that cannot be assigned to a variable.

However, as an aside, there exist expressions that can never be assigned to a variable. One would think expressions that throw errors fall within this box, such as 1/0, which throws ZeroDivisionError:

>>> foo=1/0
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    foo=1/0
ZeroDivisionError: division by zero

but in fact those expressions can be caught within try/except statements, such as the one below:

try:
  foo=1/0
except:
  pass

This is not the end of the story however, since there exist expressions which cause the Python interpreter to segfault. The shortest one that I'm aware of is from Codegolf Stack Exchange:

exec((lambda:0).__code__.replace(co_consts=()))

Which will always crash the python interpreter, even within a try-except statement.

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