Python基础灬函数补充(作用域,迭代器,生成器)

变量作用域

函数里面操作外部变量时,作用域仅限于函数里面。

var1 = 123
def func():
    var1 = 456
    print("函数里:", var1)
func()
print("函数外:", var1)
# 函数里: 456
# 函数外: 123

操作函数外变量

var1 = 123
def func():
    global var1 # 将其声明为全局
    var1 = 456
    print("函数里:", var1)
func()
print("函数外:", var1)
# 函数里: 456
# 函数外: 456

迭代器

# 迭代器
string = "start" # list,str,tuple都是可迭代对象Iterable
it = iter(string) # 通过iter(Iterable)转化为一个迭代器
while True:
    try:
        print(next(it)) # 迭代器通过next(Iterator)获取下一个元素,直到取完元素报StopIteration异常
    except StopIteration as e:
        break

生成器

关键字field实现range函数小数步长

range(int,int,int) # range函数只能实现生成一组序列,但是步长只能时整数

普通函数带有yield关键字,变成一个generator,且每次调用时,遇到yield程序返回,再次执行从上次返回的地方开始。

def frange(start, stop, offset):
    x = start
    while x < stop:
        # print(x)
        yield x
        x += offset

print(type(frange(10,13,0.5)))
# <class 'generator'>

for i in frange(10, 13, 0.5):
    print(i)
# 10
# 10.5
# 11.0
# 11.5
# 12.0
# 12.5

猜你喜欢

转载自www.cnblogs.com/july-3rd/p/10703977.html