初识-Python-day04

day04;

函数名的本质,闭包函数,装饰器,迭代器,生成器,列表推导式,三元运算,匿名函数 。

=================================================================

#函数名;

def a():
    print('in a func')

# a()
# print(a)  # <function a at 0x00000000039C41E0>
# b = a
# print(b)
# b()
# 并不是只有函数名()才能调用一个函数
# 只要是函数的地址对应的变量都可以通过()调用函数
# l = [a]
# print(l[0])
# l[0]()
#函数的名字可以被赋值,也可以作为一个容器类型的元素,可以作为函数的参数,可以做返回值
# 变量怎么使用,函数的名字都可以怎么用

#闭包函数 :

# 闭包的作用 :Python中闭包的主要用途就是用于装饰器的实现,如果一个内部的函数引用了外部函数的变量,那么这个内部函数就是一个闭包函数。
# def hanshu():
#     name = 'alex'
#     def a():
#         # '''一旦内层函数引用了外层函数的变量,a就是一个闭包函数'''
#         print('in func a',name)  # 这是一个闭包函数
#     return a
#
# a = hanshu()
# print(a())

# def func1():
#     a = 1
#     b = 2
#     def inner():  # inner中没有用到a,b所以不是闭包
#         print(1,2)

#装饰器 ;

@timemer    装饰器
# 什么情况下使用用:
    # 在已经写好要发版的程序的基础上,需要对一个函数执行前或者是执行后在需要增加功能的时候
        # 开放封闭原则
                # 开放 :对扩展是开放的
                # 封闭 :对修改时封闭
    # 有的时候也会写好一些装饰器,加在需要装饰的函数上面
        # login  django框架里也这么用
        # log

 

# 装饰器的固定格式;

# def 装饰器的名字(func):
#     def inner(*args,**kwargs):
#         '''在执行被装饰的函数之前要做的事儿'''
#         '''判断是否登录'''
#         ret = func(*args,**kwargs)
#         '''在执行被装饰的函数之后要做的事儿'''
#         '''写log'''
#         return ret
#     return inner

#迭代器 :

# 迭代器的特点:
    # 1.一个一个的取值,而不是一次性把所有数据都创建出来,迭代器中的数据不取不创建
    # 2.只能按照顺序取,不能跳过也不能回头
    # 3.一个迭代器中的数据只能从头到尾取一次
# 可迭代器协议: 如果一个数据类型中有 iter方法 ,那么这个数据类型就是可迭代类型
# 迭代器协议:如果一个数据类型中有iter和next方法,那么这个数据类型就是一个迭代器类型
# print('__iter__' in dir(123))
# print('__iter__' in dir(123.43))
 迭代器的特点:节省内存空间
# 除了文件操作符以外你见过的所有内容都不是迭代器类型
# 都只是可迭代类型
# 可迭代类型是可以通过某些方法转换成迭代器,所有能被for循环的至少是一个可迭代类型

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值