作用域:指的是变量生效的区域
a定义在了函数内部,所以他的作用域就是函数内部,函数外部无法访问
deffn(): a=10# a定义在了函数内部,所以他的作用域就是函数内部,函数外部无法访问print('函数内部:','a=',a) fn() print('函数外部:','a=',a)
试试把b定义在函数外部
b=10deffn(): a=10print('函数内部:','b=',b) fn() print('函数外部:','b=',b)
得到的结论是:在 Python 中一共有两种作用域,全局作用域和函数作用域
全局作用域
全局作用域是在程序执行时创建,在程序执行结束时销毁
所有函数以外的区域都是全局作用域
在全局作用域中定义的变量都是全局变量,全局变量可以在程序的任意位置被访问到。
函数作用域
1.函数作用域在函数调用时创建,在调用结束时销毁
2.函数每调用一次就会产生一个新的函数作用域
3.在函数作用域中定义的变量,都是局部变量,它只能在函数内部被访问
4.当使用变量时,会优先在当前作用域中寻找该变量,如果有则使用,如果没有则继续去上一级作用域中寻找,如果有则使用,
没有则继续去上一级作用域中寻找,以此类推,
直到找到全局作用域,依然没找到,则抛出异常
Name Error: name ‘a’ is not defined
5.内部函数能看到外部函数,外部函数能看到全局函数;外部函数不能看到内部函数)
6.在函数中为变量赋值时,默认都是局部变量赋值
7.如果希望在函数内部修改全局变量,则需要使用 global 关键字,来声明变量
global a # 声明在函数内部的使用a是全局变量,此时再去修改 a 时,就是在修改全局的 a
a=20deffn(): globalaa=10print('函数内部:a=',a) fn() print('函数外部:a=',a)