局部变量的范围有限,通常是一个函数或一个功能块。
访问循环中定义的变量时出错:无法访问未与值关联的局部变量“x”
我的代码: 导入 numpy 作为 np 导入 cv2 cap = cv2.VideoCapture(0) face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') eye_cascade = cv2.CascadeClassi...
我的代码: 导入 numpy 作为 np 导入 cv2 cap = cv2.VideoCapture(0) face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') eye_cascade = cv2.CascadeClassi...
“无法访问未与值关联的局部变量‘x’”错误,其中值在 for() 循环内定义
导入 numpy 作为 np 导入 cv2 cap = cv2.VideoCapture(0)face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') eye_cascade = cv2.CascadeClassifier(cv2....
在C/C++中,函数可以将局部变量声明为静态。这样做时,该值保留在内存中,并且可供后续调用该函数使用(该变量不再是本地变量,而是...
您好,我正在尝试将一组定义如下的存储桶通知转换为映射:序列结构,以便我可以使用存储桶通知中的动态块迭代序列。
Terraform - 如何将地图中的内部元素列表合并到具有设置类型值的地图中
您好,我正在尝试将一组定义如下的存储桶通知转换为映射:序列结构,以便我可以使用存储桶通知中的动态块迭代序列。
在 C++ 中,我有一种情况,我想从内部块作用域访问 main 函数的局部作用域中定义的变量。这是我的代码的简化版本: #包括 在 C++ 中,我有一种情况,我想从内部块作用域访问在主函数的局部作用域中定义的变量。这是我的代码的简化版本: #include <iostream> using namespace std; int var = 10; // Global variable int main(int argc, char *argv[]) { int var = 20; // Local variable in main { int var = 40; // Local variable in inner block cout << ::var; // Prints 10 (the global variable) // But I want to print the `var` in the `main` scope (20) } return 0; } 我想让cout打印20,这是main范围内var的值。然而,使用 ::var 只给我全局变量值 10。 C++ 中是否有一种方法可以从该内部块中访问 main 中的局部变量(值 20),绕过内部块中定义的局部变量(值 40)? 我知道 C++ 没有相当于 Python 的 nonlocal 关键字,但是是否有一种解决方法或技术允许从封闭范围访问变量而不更改变量名称? 没有办法做到这一点。该语言没有提供区分 var 中的第一个 main 与第二个 var 的方法。 如果您曾经编写过生产代码,请避免使用此类变量。这将导致有错误的代码。您会对给定代码行中的范围内的变量感到困惑。 您无法访问其范围之外的变量(在某些情况下 extern 可以使用,但不能在您的代码中使用)。因此,您不能在其范围之外使用变量 var (在最里面的块内声明)。例如, int var = 10; int main(int argc, char *argv[]) { int var = 20; // this var { int var = 40; } cout << var; // this will access var declared first and prints 20 return 0; } 相信我,不需要以这种方式声明和使用变量。这将导致有错误的代码。请记住,如果您使用 GCC 或 clang,请在编译时始终使用 -Wshadow 编译器标志,因为如果在代码中的任何位置执行类似的操作,它会显示警告。如果您不从终端编译代码,请尝试将其包含在您的 IDE 或 makefile 中。 案例A int var = 10; int main(int argc, char *argv[]) { int var = 20; // this var { int var = 40; cout << ::var; // This will output 10 because you have used scope of operator that'll point to global variable in C++. } return 0; } 案例B int var = 10; int main(int argc, char *argv[]) { int var = 20; // this var { int var = 40; cout <<var; // This will output 40 because you are using local variable. } return 0; } 案例C int var = 10; int main(int argc, char *argv[]) { int var = 20; // this var { int var = 40; } cout << var; // this will output 20 because using var that is declared in main() function. return 0; } 关于您的示例代码 int var = 10; int main(int argc, char *argv[]) { int var = 20; // this var { int var = 40; cout << ::var; // I want to print `var` variable in main scope. // But this command print global variable. } return 0; } ...以及评论中规定的目标, ” 我想在主作用域中打印 var 变量 ...您可以按如下方式执行此操作,只需为其添加 alias: int var = 10; int main() { int var = 20; // this var { auto& outer_var = var; int var = 40; cout << outer_var; } } C++ 没有提供可以为您执行此操作的作用域解析机制。如果有这样一个机制,例如相对范围解析或函数名称作为伪名称空间名称,可能会被使用,然后人们会看到至少一些难以理解的代码,因为在一小段代码中对不同的事物使用相同的名称。另一种语言设计类似于 C#,其中隐藏(如内部 var 遮蔽外部 var)是被完全禁止的。 同样,C++ 也没有提供任何方法来为全局命名空间提供额外的名称。其他命名空间可以使用别名,但全局命名空间不能使用别名,这样就可以非常确定全局命名空间不会通过类似 companyname::counter 的内容被引用。 C++ 还对名称空间作用域函数可以重载哪些运算符进行了限制,这也是为了提供一种绝对可以依赖的理智措施。关于最后一个基本原理,我从 Bjarne Stroustrup(语言创建者)那里得知。关于缺乏相对作用域解析和缺乏全局名称空间别名的基本原理,这只是一个合格的猜测,即它们是相同的,但这是有道理的。 :)
我有这个代码: 当地人{ 宠物名称 = 狗 } 变量“颜色”{ 默认=“${local.pet_name}” 当我...
简介 在 Bash 中,我可以使用 a=() 实例化一个空数组 a。然后我可以使用例如附加元素a[${#a[@]}]="new element" 其中 ${#a[@]} 给出 a 中的元素数量。在 Bash fu...
为什么包含使用局部变量的 lambda 函数会改变局部变量的顺序
以下打印 {'a': 'a', 'b': 'b'}: def foo(a: str = "a", b: str = "b") -> 无: 打印(当地人()) foo() # 打印 {'a': 'a', 'b': 'b'} 我作为当地人所期望的
我可以在 Google 电子表格公式中定义本地值(或变量)吗?
有时我会想出很长的电子表格公式,例如使用 Unicode 字符创建“数据栏”的公式(地址相对于 G3): = rept("█"; 楼层(10 * F3 / max(F$1:F$999))) &...
我以为这会打印3,但它打印1: #Python3 def f(): 一个= 1 执行(“a = 3”) 打印(一) F() # 1 预计 3
这是我在 Stackoverflow 上的第一篇文章,所以我希望我正确遵循所有协议! 我正在努力处理一个存储过程,在该过程中我创建了一个表变量并用一个 ins 填充该表...
Java 如何处理方法内不同非嵌套代码块中声明的同名局部变量的内存?
我对 Java 和一般编程很陌生。我目前正在研究 Java 如何处理变量的记忆和作用域。我所理解的是: 局部变量(即在
为什么 Perl 的 foreach 不要求用 my 声明变量?
今天,我在 Perl 中偶然发现了一些我不知道的东西:它“本地化”了列表迭代的元素所分配的变量。 当然,这已记录在 Perl 中
在C语言中的函数中,我知道堆栈通常用于存储传递给函数的参数以及函数的局部变量。我知道这是编译器和平台相关的...
假设我正在使用 irb,并输入 a = 5。如何删除 a 的定义以便输入 a 返回 NameError? 一些背景:稍后我想这样做: 上下文 = Proc.new{}.binding 上下文.eval...
为什么我不能在 lambda 函数内声明局部变量? 我有这个代码: @覆盖 小部件构建(BuildContext上下文) { 返回新的扩展( 孩子:新的听众( ...
Terraform - 在变量.tf 中添加 type = map(object()) 的验证
首先感谢这篇文章在 variavles.tf 中添加 type = map(object()) 的默认字段,这回答了我在获取默认值以使用 type map(o.. .