python变量的作用域

python变量的作用域

什么是作用域?

作用域就是一个 程序可以直接访问命名空间的正文区域。
在一个 程序中,直接访问一个变量,会从内到外依次访问所有的作用域直到找到,否则会报未定义的错误。程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。

以C语言为例,C语言的作用域是使用一对括号{ }划分的的,就是一个{ }中定义的变量,只能在对应的{ }中使用。

以下的情况在 C语言中不允许的:(会报a变量找不到的错误)
python变量的作用域_第1张图片

python的作用域

而关于python的作用域却不太一样,刚刚接触python时候发现,在python中的if 语句for语句while语句中定义的的变量外部也能用,他们竟然是全局变量??

答案是:对的,在python中的if 语句for语句while语句定义的就是全局变量,这里需要和C语言有所区别。

验证如下:

#在if控制语句中声明变量
if True: 
	a = 3
	if(a > 0):
		b = 4
print(f"a = {a}")
print(f"b = {b}")


#在for循环中声明变量
for i in range(10):
	print( i, end='')
	if(i == 5):
		c = i
print()
print(f"i = {i}")
print(f"c = {c}")


#在while循环中声明变量
count = 5
while count > 0:
	print( count, end='')
	d = count
	count -= 1
print()
print(f"d = {d}")


#外部函数可以调用到if语句和for语句中声明的变量
def fun():
	print(f"a in fun = {a}")
	print(f"b in fun = {b}")
	print(f"c in fun = {c}")
	print(f"d in fun = {d}")
fun()

运行结果:
python变量的作用域_第2张图片

上面的结果,验证了自己的观点,python的的作用域不仔细看还是容易踩坑的。

简单来说,在python中只有模块,类,和函数才会产生新的作用域,所以if 语句for语句while语句里定义的变量在循环外也能访问,只要他们在同一个作用域里

你可能感兴趣的:(Python,python,变量,作用域,if,for)