- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
从下面的程序中,我了解到下面环境图中的局部框架(方形)(蓝色框)属于(不过),调用()方法的局部ACTIVATION RECORD “功能”类的对象。这个“函数”类对象是在我们定义函数 square(x) 时在内部创建的。
我的问题是:
如果我上面的理解是正确的,那么全局框架属于谁(哪个类对象的方法)?
因为,我觉得,控件已经从对象(特定类类型)的某个方法传递给了 square.call(3) 方法。
最佳答案
当一个函数被定义时,它被分配了只读属性func_globals
(又名__globals__
自2.6以来,仅自3.0以来)对应于当前模块命名空间(比如 module.__dict__
的 View )。你可以试试,例如:
>>> square.func_globals
# get a big dictionary-like object here
每次函数访问全局变量时都会查询此对象。当您稍后在其他模块中导入此函数时,它仍将保留对其原始范围的引用,并将从那里获取全局变量。换句话说,代码:
def square(x):
return mul(x, x)
大致等同于:
def square(x):
return globals()['mul'](x, x)
或
def square(x):
return square.func_globals['mul'](x, x)
所以,一句话:函数的全局变量属于定义它的模块,并通过函数对象的属性访问。
更新
下面发生的事情的更详细的版本(适用于 CPython)。了解 Python 最重要的一点是,与 C 等语言不同,它在“声明”和“执行”之间没有明确的区分。当你加载一个模块时,它的代码就会被简单地执行。当解释器遇到函数定义时,它会创建函数对象并将其分配给变量。任何已定义或导入到模块中的内容都将作为全局变量可供函数使用。让我们看一下函数对象:
>>> import dis
>>> dis.dis(square.func_code) # disassemble the function's bytecode
2 0 LOAD_GLOBAL 0 (mul)
3 LOAD_FAST 0 (x)
6 LOAD_FAST 0 (x)
9 CALL_FUNCTION 2
12 RETURN_VALUE
>>> square.func_code.co_names
('mul',)
开头可以看到代码LOAD_GLOBAL 0
。这意味着:
co_names
中找到索引为0
的名字,即'mul'
func_globals
中找到名字'mul'
并加载到栈中关于python - python环境下查询local frame和global frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22741630/
我已经在我的电脑上安装了 node.js,当我运行这个命令时它给了我这个错误,我该怎么办??? npm WARN config global `--global`, `--local` are dep
在 PHP 中,我想知道 GLOBAL 和 GLOBALS 之间的区别。 一些例子: print_r($GLOBALS); 最佳答案 这是与同一事物相关的两个不同事物:全局变量。 $GLOBALS -
在某些 SCSS 文件中,我看到以下内容: :global { /* ... */ } 不知道是SCSS特性还是CSS特性。我尝试搜索它,但第一眼找不到任何好的结果。 最佳答案 此运算符用于 CS
我正在考虑向 JSON 添加注释并找到 this script在处理使 JSON 有效之前将它们去除。我只是想了解如何使 JSON.minify() 函数可用? 开始于 (function(globa
在我的 React 应用程序中,我尝试使用 react-widgets package 中包含的 DateTimePicker 组件.我还通过 reactstrap 使用 Bootstrap 4 组件
全局变量的作用域是所有文件,而静态全局变量的作用域只是它所在的文件被宣布。为什么这样? 全局或静态全局变量存储在内存中的什么位置? 最佳答案 有一些混淆,因为 C 中的 static 可能意味着两种不
我尝试从 Marko 组件访问全局变量,但收到 Uncaught ReferenceError: out is not Defined。 class { onClick(event) {
这个 fiddle 在 IE 和 FF 中返回正确的值“5,5”,但在 Chrome 中它返回“5.5” fiddle :http://jsfiddle.net/4tvSH/ Globalize.cu
我对 python 很陌生,我尝试制作一个简单的 GUI 程序。但是,我遇到了一个“问题”,确切地说是一个警告,上面写着:“m”未在全局范围内定义(Python(变量未定义全局))。 我知道如果你想在
将变量初始化为 global var 或调用 globals().update(var) 有什么区别。 谢谢 最佳答案 当你说 global var 您是在告诉 Python var 与在全局上下文中
我正在开发 ASP.NET Web 应用程序,对于未处理的异常,我正在使用Global.asax 文件 我在其中编写了将错误日志写为 的逻辑 Sub Application_Error(ByVal s
这是我的第一篇 StackOverflow 帖子。提前致谢!我在这里找到了很多答案,但在网络上的任何地方都找不到有关我当前问题的任何信息。 =( 我有一个 C# 服务,我已经使用 Visual Stu
问题: 我正在尝试将对我的 MongoDB 数据库的查询结果有效地分配给全局数组。我基本上尝试将对全局数组的引用存储在一个数组中,以便我可以将 for 循环中的查询结果分配给所有这些引用。 这似乎是不
我想看看 Node.js 中 global.process 的构造函数是否存储在任何地方。 例如,在网络中,构造函数很容易获得。例如,window 的构造函数是window.Window。所有构造函数
Tell me about the difference between global.asax and global.asax.cs ? 和 If i click the both file in
全局对象作为顶级词法环境(如果你愿意的话,在作用域链的顶部)。这意味着可以通过直接引用(如变量)访问全局属性: // global code this.foo = 1; // creat
如何修复 Depricated 警告消息 (node:6136) DeprecationWarning: 'GLOBAL' is deprecated, use 'global' 在我的代码中,我使用
在我的本地发布文件夹中,我有 Global.asax 和 Global.asax.cs,其中 Global.asax 未更新(日期为一个月前)和 Global.asax .cs 已更新。 我检查了 G
我有下面的代码,自动生成: $ react-native init RepeatAloud 应用程序.tsx /** * Sample React Native App * https://git
在 Node-red 仪表板上,我想以不同的流量显示相机流。背后的想法是在每个流上显示相机。 为了显示相机流,我使用了 iFrame。一切正常,但我必须为每个单独的 iFrame 提供流的 URL。
我是一名优秀的程序员,十分优秀!