python变量作用域记录

1

作用域,与C系列语言不一样的地方:
python变量作用域记录_第1张图片
python变量作用域记录_第2张图片
举几个小例子:

a=100
def func1(a):
    a=200
func1(a)
print(a) 
# 这个是100,因为传参是a,被认定是局部变量

def func2():
    a=200
func2()
print(a)
# 很遗憾这个py中也是100,a被声明在func里面,被认定为局部变量,并不是全局变量的a,
# 只要局部有a,离这个a更远的所有的a在局部a的作用域内都被屏蔽掉。

for i in range(2):
    a=200
print(a)
# 这个a就是200了。同在全局。

C系比较

和C系不同的是,拿func2举例

int a=100;
int func2(){
     
	a=300;
}
int main(){
     
	func2();
	printf("%d",a);	
	//这里会被函数改成300.
}

python变量作用域记录_第3张图片
所以C系程序员转py的宝宝们真的要注意了。这个作用域确实是要注意的。

你可能感兴趣的:(python变量作用域记录)