区分局部与全局变量:示例程序中num是否兼具两类变量属性?
关于Python中全局变量与局部变量的疑问
首先看你给出的代码:
num = 1 def fun1(num): print(num)
1. 变量num是否同时充当全局变量与局部变量?
答案是不是——虽然它们名字相同,但本质是两个完全独立的变量:
- 函数外定义的
num = 1是全局变量,作用域覆盖整个模块(除了被局部变量同名遮蔽的区域); - 函数
fun1的参数num是局部变量,作用域仅限fun1函数内部。
你可以把它们理解成同名的两个不同盒子,一个放在“全局仓库”,一个放在“fun1的专属小房间”,互相不干扰。
2. 函数参数num是否属于fun1()的局部变量?
完全正确!在Python中,函数的参数默认就是该函数的局部变量。当你调用fun1(num)时,其实是把全局变量num的值(也就是1)传递给了函数的局部参数num,函数内部使用的num都是这个局部版本,和全局的num没有直接关联。
举个更直观的例子验证一下:
num = 1 def fun1(num): num = 2 # 修改的是局部变量num print("函数内的num:", num) fun1(num) print("全局的num:", num)
运行这段代码会输出:
函数内的num: 2 全局的num: 1
可见函数内部修改局部参数num完全不会影响全局的num,进一步证明它们是独立的变量。
内容的提问来源于stack exchange,提问作者Tamamo
相关产品推荐
相关产品推荐

