迭代器、生成器和模块
----------------------变量作用域
----------------------迭代器
----------------------生成器
----------------------模块
----------------------包
一、变量作用域
# 1.变量作用域 - 变量可以使用的范围
# 根据变量作用域的不同可以将变量分为:全局变量、局部变量
# 1.全局变量
'''
没有定义在函数或者类中的变量都是全局变量,全局变量的作用域是从定义开始到程序结束。
全局变量默认保存在全局栈区间,在程序结束后才会自动销毁。
'''
# a是全局变量
a = 10
print(f'外部使用{
a}')
# b和x也是全局变量,任何地方都可以使用
for x in range(5):
b = 20
print(f'循环中使用{
a}')
def func1():
print(f'函数中使用{
a}')
# 2.局部变量
'''
定义在函数中的变量是局部变量,局部变量的作用域是从定义开始到函数结束。
局部变量默认保存在函数对应的临时栈区间中;函数对应的临时栈区间是开始调用函数的时候创建,函数调用结束会自动销毁。
'''
# c是局部变量,只能在函数内部使用
# 形参d也是局部变量
def func2(d):
c = 30
print(f'在函数内部使用{
c}')
func2(1)
# print(f'函数外部不可使用{c}') # 外部使用会报错
# print(f'函数外部不可使用{d}') # 外部使用会报错
# 3.global关键字的作用
'''
global只能在函数体中使用,用来改变函数中变量的存储方式(让局部变量保存到全局栈区间中)
1)在函数中定义全局变量,需要先用global进行申明
2)如果要在函数中修改全局变量的值,需要先用global进行申明,否则不会修改全局变量的值而是创建一个新的局部变量
'''
# 全局变量m
m = 100
# 在函数内部可以使用全局变量的值,但是不可以修改全局变量的值,若进行修改只是在临时栈区间中新创建了一个局部变量,想要修改的话需要用global进行说明
def func3():
global e
e = 40
global m
m = 200
print(f'函数内部{
m}') # 200
func3()
print(