gpt4 book ai didi

python - Python命名查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:34 25 4
gpt4 key购买 nike

当我说,

>>>radius = 2

在内部,在 __main__ 模块的全局框架中创建了一个名为 radius 的新对象,该对象属于 int 类。引用变量也由指向该对象的名称 radius 创建。

当我说,

>>>from math import sqrt

在内部,在 __main__ 模块的全局框架中创建了一个名为 sqrt 的新对象,该对象属于 function 类。引用变量也由名称 sqrt 创建,它指向 function 类型的对象。

当我说,

>>>def square(x):
return mul(x,x)

在内部,在 __main__ 模块的全局框架中创建了一个名为 square 的新对象,该对象属于 function 类。引用变量也由名称 square 创建,它指向 function 类型的对象。

我的问题:

我的理解对吗?

radiussqrtsquare 对象是否在 __main__ 模块的全局框架和引用变量之外创建(radius sqrt square) 位于 __main__ 模块的全局框架中是否指向这些对象?

在CS61A Fall 2012的类(class)中,老师说,是这样的,看起来隐藏了很多python程序内存模型的细节。

program environment in memory

最佳答案

问一个对象是在哪里创建的还是一个引用在哪里是没有实际意义的。正如 200 OK 在评论中指出的那样,所有 对象名称都是引用 - 没有一个名称比其他名称更规范或更原生。对象只是存在(在私有(private)堆上,尽管这与所有意图和目的无关),并且名称指向它们。

也就是说,您的问题中有一个细微差别不太正确。当您从模块导入某些内容时——无论是整个模块本身,还是只是一个函数——对该模块的引用都存储在 sys.modules 字典中。这确保了当代码的另一部分从该模块导入时,它不会被重新导入;使用现有的导入版本。

关于python - Python命名查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24553956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com