• Python_Mix*函数名的使用以及第一类对象,闭包,迭代器,for循环的内部机制


    • 一:函数名的应用(第一类对象)
    • 函数名的命名规范和变量是一样的,函数名其实就是变量名,
      • 0)函数名可以赋值给其他变量
    • 1 def func():        #定义一个名为func的函数
      2     print('my angel')
      3 a = func        #将函数名func赋值给a
      4 func()
      5 a()               #调用func()和a()
      #结果为:
      my angel
      my angel
      #所以函数名是可以赋值给其他变量的
      1 def func():
      2     print("my angel")
      3 a = func
      4 print(a)
      5 func()
      6 a()
      7 print(func)   #通过打印a和func,可以得出两个函数的内存地址完全一致
      • 1)可以作为列表中的元素进行存储.
    •   
      1 def func1():         #定义函数1
      2     pass
      3 def func2():        #定义函数2
      4     pass             
      5 lst = [func1,func2]   #将函数作为元素插入列表,注意:这里函数名不加小括号,加小括号是引用函数
      6 for el in lst:    
      7     el()
      • 2)可以作为参数传递给函数.
    • 1 def func():
      2     pass
      3 def proxy(fn):    #这里的fn现在为函数func
      4     fn()                 #结果为fn(func)
      5 proxy(func)   #将函数名func作为参数传递给函数proxy
      • 3)可以作为函数的返回值
    • 1 def fanc():
      2     def inner():       #3,执行inner函数
      3         pass
      4     return inner  #2,fanc函数的返回值是inner
      5 func()()   #1,调用func函数
    • 二:闭包
    • 什么是闭包:在内层函数中访问外层函数的局部变量.
    • 1 def func():  
      2     name = '第一次-光良'
      3     def func2():
      4         print(name)   #3,函数func2中没有name这个变量,会从外层找这个变量,这就是闭包.
      5     func2()     #2,调用func2函数
      6 func()        #1,调用func函数
      7 
      8 #结果为'第一次-光良'
      • 相关操作:
        • 可以使用函数名.__closure来检测函数是否是闭包,如果返回None就不是闭包,
      • 好处:
        • 1)保护你的变量不受外界影响
        • 2)可以让变量常驻内存,供后面的程序使用.
    • 三:迭代器
      • 迭代器用来遍历列表,字符串,元组......可迭代对象
      • 相关操作:
        • 使用dir来查看该数据包含了哪些方法
        • 可迭代对象:Iterable,里面有__iter__( )可以获取迭代器,没有__next__( )
        • 迭代器:Iterator,里面有__iter__( )可以获取迭代器,还有__next__( )
      • 迭代器的特点:
        • 1)只能向前
        • 2)惰性机制(给一条指令,执行一次)
        • 3)省内存(生成器)
      • for循环的内部机制:
        • 1)首先获取到迭代器
        • 2)使用while循环获取数据
        • 3)it.__next__( )来获取数据
        • 处理异常 try:xxx except Stoplteration:
  • 相关阅读:
    CSP游戏 4
    CSP 交通规划
    CSP 地铁修建
    CSP 通信网络
    CSP URL映射
    CSP 权限查询
    CSP Markdown
    CSP JSON 查询
    SQL里的子查询
    SQL里的操作符
  • 原文地址:https://www.cnblogs.com/mixw/p/9455057.html
Copyright © 2020-2023  润新知