day_10 函数名,闭包,迭代器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1. 函数名的使用
   1.函数名是一个变量,函数名储存的是函数的内存地址
   2.函数名可以赋值给其他变量
   3.函数名可以当容器类对象的元素
   4.函数名可以当其他函数的参数
   5.函数名可以做函数的返回值
2.闭包:闭包就是内层函数对外层函数(非全局)变量的使用
   1.闭包的作用
     1.可以保护变量不收侵害
     2.常用变量常驻内存
   2.闭包的判断
     1.print(函数名._closure_)  返回值为cell表示闭包,返回值为NONE表示不是闭包
     2.闭包后内层函数怎么访问外层函数?
     一层层返回就行
     列:def func1():
            def func2():
                def func3():
                    print("嘿嘿")
            return func3
        return func2
        func1()()()

  

复制代码
3.迭代器 
    1.查看变量能够执行的方法 dir
    2.itrator:迭代器,具有的方法  _iter_(),_next_()
    3.iterable:可迭代的对象 具有的方法  _iter_()
    for循环的机制
    i=lst._iter_()
    while 1:
        try:
            el=i._next_()
            print(el)
        except stopitration
            break
    从迭代器中获取元素的唯一方法_next_
    4.三个特征:
     1.省内存
     2.惰性机制
     3.只能向前(迭代器是一次性用品,想返回只能重新获取迭代器)
复制代码
复制代码
4.如何判断对象是否可迭代
  1.print(dir(对象))  出现了_iter_->可迭代对象
  2.print(dir(对象))  出现了_next_->迭代器
     print("__iter__" in dir(lst)) # True 可迭代的
     print("__next__" in dir(lst)) # False 不是迭代器
     i=xx._iter_(),能够执行的话,i就是一个迭代器,迭代器本身是可迭代的
  3.from cellection import iterable,itreator
    print(isinstance(lis,itreable))  TRUE
    print(isinstance(lis,itreator))  FALSE
复制代码
复制代码
5.关联的小点
     1.defunc(a,b)
     '''
     文档注释
     这个函数用来计算两个数的和并返回
     :param a: 第一个数
     :param b: 第二个数
     :return:  第一个数和第二个数的和
     author:sylar
     date:2018-10-31
     '''
     print("我是func")
     return a + b
 print(func.__doc__) # document 文档注释
 print(func.__name__) # name 名字 获取函数名
     
复制代码

 




posted @   阿布_alone  阅读(119)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
TOP
点击右上角即可分享
微信分享提示