变量的作用域
- 讲到了函数就必须介绍变量的作用域相关。
- 作用域指的是变量的有效范围。变量并不是在哪个位置都可以访问的,访问权限取决于这个变量是在哪里赋值的,也就是在哪个作用域内赋的值。变量在哪个作用域内赋值,则表示该变量的作用域就是该区域,变量只可以在其作用域指定区域被访问。
- 通常而言,在编程语言中,变量的作用域从代码结构形式来看,有块级、函数、类、模块、包等由小到大的级别。但是在Python中,没有块级作用域,也就是类似if语句块、for语句块、while语句块,with上下文管理器等等是不存在作用域概念的,他们等同于普通的语句。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QBJSYeH3-1644595668288)(imgs/44.png)]
-
核心:
-
通常,函数内部的变量无法被函数外部访问,但内部可以访问;类内部的变量无法被外部访问,但类的内部可以。通俗来讲,就是内部代码可以访问外部变量,而外部代码通常无法访问内部变量。
-
#下列程序存在的问题是什么? age = 10 def func(): name = 'bobo' print(age,name) func() print(name)
-
def outer(): def inner(): print('i am inner') inner() return inner inner()
-
全局变量和局部变量
- 局部变量
- 定义在函数内部的变量拥有一个局部作用域,被叫做局部变量
- 全局变量
- 定义在函数外的拥有全局作用域的变量,被称为全局变量。(类、模块等同理)
num = 123 #?
def func():
email = 'www.123.com' #?
print(email,num)
func()
- 注意:
- 所谓的局部变量是相对的。局部变量也有可能是更小范围内的变量的外部变量。
a = 1 #全局变量
def func():
b = 2 #局部变量
print