自学python100天--第十一天:三器一闭基本操作

写在前面:作为一个计算机小白,也不是学信息技术专业,单纯是出于自己的爱好,偶然间的一次机会接触到python,触发了自己想要学习这门语言的想法;每天分享一点点自己的学习笔记;

‘’’
三器: 装饰器 迭代器 生成器(明天学)

一闭:闭包

‘’’

高阶函数 + 嵌套函数 构成一个闭包

1、嵌套函数

2、内层函数 引用外层函数的变量

3、外城函数 返回内层函数的地址

def f1(x):
    b = 3
    def f2():
        print(b+x)
    return f2
res = f1(10)
res()
res()

可变类型

def fun():
    l1 = []
    l1.append(11)
    print(l1)
def fun1():
    l2 = []
    def fun2():
        l2.append(11)
        print(l2)
    return fun2

普通函数

fun()
fun()
fun()
print('-----')

闭包

res1 = fun1()
res1()
res1()
res1()

定义闭包 闭包的作用

装饰器是闭包的一种实现方式

装饰器的作用 在不改变原有函数的基础上 增加新的功能

装饰器的使用 @装饰器

定义一个装饰器

def zs(f):
   def inner():
       # 使用外城函数的变量
       print('大家好,我是XXX')
       f()     #   f函数的地址
   return inner
@zs
def say_hello():
   print('你好')

第一次调用

say_hello()

第二次调用

say_hello()

第三次调用

say_hello()

在不改变添加学生函数的基础上,增加一个查询功能

def zs_cx(f):   #   函数地址
    def inner1():
        f() #   调用接收到的函数地址
        if 'xx' in l1:
            print('已经存在')
        else:
            print('没有')
    return inner1
l1 = []
@zs_cx  #   执行装饰的过程,add—stu以参数的形式传递给zs—cx
def add_stu():
    name = 'xx'    #   张三
    l1.append(name)
    print(l1)
#add_stu()
print(add_stu)
add_stu()

定义装饰函数 怎么调用装饰器

可迭代对象 迭代器 生成器

迭代: 从容器的第一个元素开始到最后一个元素结束

可迭代的对象(容器): 允许迭代的对象

迭代器: 访问容器的一个对象

生成器: 是一个特殊的迭代器 除了可以访问以外,可以自己创建数据和访问数据

from collections.abc import Iterator,Iterable

Iterator 迭代器

Iterable 可迭代对象

list1 = [23]
print(isinstance(list1,Iterable))   #   判断类型
print(isinstance(list1,Iterator))
res = map(lambda x:x+2,[2,3,4,5])
print(isinstance(res,Iterable))
print(isinstance(res,Iterator))

dir

print(dir(list1))   #   iter
print('----------')
print(dir(res)) #   next()
print(next(res))    #   取第一个元素
print(next(res))    #   取第二个元素

for 可第二代对象 不一定是迭代器 迭代器一定是可迭代对象

print(next(res))
list2 = iter(list1)
print(isinstance(list2,Iterator))
isinstance(1234,Iterable)   #   iter    next
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值