C++/C/Python如何访问与局部/类成员同名的全局变量?
问题解答
1. 当前C++代码访问全局变量v的实现
你提供的代码是C代码(包含C特有的类定义语法),要访问被类成员变量、局部变量遮蔽的全局v,使用**全局作用域解析运算符::**即可,修改printv函数内的输出语句即可:
void printv() { int v=12; printf("V: %d", ::v); // 前缀::指定访问全局作用域的v,输出为10 }
2. C语言同名全局变量的访问方法
C语言没有作用域解析运算符,当局部变量和全局变量同名时,可以在内部代码块中通过extern关键字声明全局变量来访问,示例如下:
#include <stdio.h> int v = 10; // 全局变量 int main() { int v = 12; // 同名局部变量 printf("局部v:%d\n", v); // 输出12 // 内部块用extern声明,指定访问全局的v { extern int v; printf("全局v:%d\n", v); // 输出10 } return 0; }
3. Python同名全局变量的访问方法
Python提供内置globals()函数,可直接获取当前模块的全局变量字典,即使存在同名局部变量,也可以通过字典键访问到对应的全局变量,示例如下:
v = 10 # 全局变量 def test(): v = 12 # 同名局部变量 print("局部v:", v) # 输出12 print("全局v:", globals()['v']) # 输出10 test()
如果需要修改全局变量的值,则需要在函数开头用global关键字声明变量:
v = 10 def test(): global v v = 12 # 此时修改的是全局变量v test() print(v) # 输出12
内容的提问来源于stack exchange,提问作者Meganathan
相关产品推荐
相关产品推荐

