迭代器生成器和模块
全局变量
"""
没有定义在函数或者类中的变量都是全局变量,全局变量的作用域是从定义开始到程序结束。
全局变量默认保存在全局栈区间,程序结束后才会自动销毁。
"""
a = 10
for _ in range ( 5 ) :
b = 20
print ( f'循环中使用b: { b} ' )
print ( f'外部使用a: { a} ' )
print ( f'外部使用b: { b} ' )
局部变量
"""
定义在函数中的变量是局部变量,局部变量的作用域是从定义开始到函数结束。
局部变量默认保存在函数对应的临时栈区间中;函数对应的临时栈区间是开始调用函数的时候创建,函数调用结束会自动销毁
"""
def func2 ( d) :
c = 30
print ( f'函数内部使用c: { c} ' )
print ( f'函数内部使用d: { d} ' )
func2( 29 )
global关键字的作用
"""
global只能在函数体中使用,用来改变函数中变量的存储方式(让局部变量保存到全局栈区间中)
1)在函数中定义全局变量,需要先用global进行申明
2)如果要在函数中修改全局变量的值,需要先用global进行申明,否则不会修改全局变量的值而是创建一个对应的局部变量
"""
m = 100
def func3 ( ) :
global e
e = 40
global m
m = 200
print ( f'函数内部m: { m} ' )
func3( )
print ( e)
print ( f'函数外部m: { m} ' )
迭代器(iter)
"""
容器型数据类型;
打印迭代器无法查看所有的元素,也不能统计元素的个数,如果需要使用迭代器中的元素必须将元素从迭代器中取出,而且取一个就少一个。
如果想要使用后面的数据,必须先前面的数据取完。
"""
i1 = iter ( 'abc' )
i2 = iter ( [ 10 , 20 , 30 , 40 ] )
print ( i1)
print ( i2)
i1 = iter ( 'abc' )
i2 = iter ( [ 10 , 20 , 30 , 40 ] )
print ( next ( i1) )
print ( next ( i1) )
print ( next ( i1) )
print ( next ( i2) )
"""
方法:
for x in 迭代器:
print(x)
"""
生成器
"""
生成器是容器型数据类型;生成器是具有产生多个数据的容器,而不是保存多个数据的容器。
打印生成器无法查看所有的元素,也无法统计生成器中元素的个数。
每次需要获取生成器中的元素的时候,生成器就会创建一个数据,创建一个就少一个。
"""
"""
调用带有yield关键字的函数就可以得到一个生成器
(如果被调用的函数中有yield关键字,那么调用函数的时候既不会执行函数体也不会获取函数返回值,而是得到一个生成器对象)
"""
def func1 ( ) :
print ( '=====' )
print ( '+++++' )
print ( '-----' )
yield
result = func1( )
print ( f'result: { result} ' )
"""
生成器能产生多少个数据,能产生哪些数据,由执行创建生成器的函数的函数体的时候会遇到几次yield,每次遇到yield的时候后面的值决定。
"""
def func2 ( ) :
yield 100
yield 200
yield 300
gen2 = func2( )
print ( list ( gen2) )
def func3 ( ) :
for x in range ( 5 ) :
yield x + 1
gen4 = func3( )
print ( gen4)
print ( next ( gen4) )
print ( next ( gen4) )
模块
"""
python中一个py文件就是一个模块。
"""
"""
前提:被使用的模块的模块名(文件名)必须是标识符并且不是关键字
使用方法:被使用的模块必须先导入再使用。
"""
"""
1.import 模块名:导入指定模块,导入后可以通过'模块名.xxx'的方式去使用这个模块中所有的全局变量(包括全局函数)
2.from 模块名 import 变量1, 变量2, 变量3, ... :导入指定模块中指定内容,导入后可以直接使用导入的所有变量
3.from 模块名 import * :导入指定模块中所有的内容,导入后可以直接使用所有内容
4.import 模块名 as 新模块名 :对模块重命名
from 模块名 import 变量1 as 新变量1, 变量2 as 新变量2, 变量3 as 新变量3, ... : 对导入的变量重命名
"""
包
"""
前提:包名和模块名必须是标识符并且不是关键字
使用方法:先导入再使用
"""
"""
1) import 包名: 直接导入包,导入后可以通过'包名.xxx'的方式使用__init__.py文件中所有的内容
2) import 包名.模块名:直接导入包中指定的模块,导入后可以通过'包名.模块名.xxx'的方式使用模块中的内容
3) from 包名 import 模块名1, 模块名2, ... : 导入包中指定的模块
4) from 包名.模块名 import 变量1, 变量2, 变量3 : 导入指定包中指定模块中的指定变量
"""