zoukankan      html  css  js  c++  java
  • 函数名的应用,闭包,迭代器

    1.函数名的应用(第一类对象)

    函数名的命名规范和变量差不多

    1 def func():
    2     print("吃了么")
    3 def func2(fn):
    4     print("我是finc2")
    5     fn()
    6     print("我是func3")
    7 func2(func)

    首先理解print(func) 这里输出的是一个func的内存地址,只有后面有括号的时候才是调用函数

    这道题先是走7 前面是这个func的循环体,循环func2 这里的fn=func 内存地址相同 然后输出"我是func2',再走fn=fnc走1,输出:"吃了么",最后走"我是fun3",结束这个循环

    函数可以作为函数的返回值

    1 def fun_1():
    2     print("这里是函数1")
    3     def func2():
    4         print("这里是函数二")
    5     print("这里是函数一")
    6     return  func2
    7 fn=fun_1()
    8 fn()

    这里fun_1的返回值又通过fn()的形式继续输入

     首先执行fun_1 输出"这里是函数1",  继续往下走,输出"这里是函数一"  然后输出返回值 func2 注意 这里输出的是一个内存地址 然后走 8 fn() 继续循环fn=func2这个函数输出"这里是函数二"

    2.闭包

    :定义:在内层函数访问外层函数的变量

    作用: 1.保护变量不受侵害

    2.可以让一个变量常驻内存(函数里面a=10)

    1 def func():
    2     name="alex"
    3     def fun2():
    4         print(name)
    5     fun2()
    6 func()

    这里的name="alex" 就是一个闭包  因为这里 alex 是内层函数对外层函数变量的引用  ,就叫闭包  外层没有函数所以要引用

    1 def func():
    2     name="alex"
    3     def fun2():
    4         print(name)
    5     return  fun2
    6 fn=func()
    7 fn()

    6.访问外部函数,获取内部函数的地址

    7.返回内部函数

    3.迭代器

    1 s = "HAHAHAHA"
    2 print(dir(s))
    3 print(dir(str))

    这里 dir2 指的是输出的打印对象的方法和类 

    dir 3 指的是打印类的方法和类

    所有的 __iter___ 是可以迭代的意思

    s="            "

    it = s .__iter___  #获取迭代器

    print(it)

    print(it__next__)  一个一个数下去

    特点: 1.只能向前

    2.几乎不占内存,节省内存

    3. for 循环

    4.惰性机制

    1 lst=[1,2,3]
    2 lis_iter = lst.__iter__()
    3 while 1:
    4     try:
    5         i=lis_iter.__next__()
    6         print(i)
    7     except StopIteration:
    8         break

    2. #获取迭代器

    try ecprct  只是预防

    StopIteration 这一个错误
    5#获取下一个元素
    1 lst=["我是神"]
    2 from collections import  Iterable
    3 from collections import  Iterator
    4 print(isinstance(lst,Iterable))
    5 print(isinstance(lst,Iterator))

    ITERABLE  # 可迭代对象 没有__next__

    ITERATOR  # 迭代器 

    这里lst 只是一个对象 并不能进行下一项迭代

  • 相关阅读:
    FFmpeg filter简介
    CR, LF, CR/LF 回车 换行
    Windows / VS下不同类型变量转换
    Android库分析工具(崩溃反编译)
    adb install使用说明
    多媒体文件格式探测⑨
    多媒体文件格式之AVI
    多媒体文件格式之RMVB
    多媒体文件格式之TS
    多媒体文件格式之FLV
  • 原文地址:https://www.cnblogs.com/zhangqing979797/p/9456231.html
Copyright © 2011-2022 走看看