zoukankan      html  css  js  c++  java
  • python_函数进阶2

    一、函数名的 应用

    1、函数名就是函数的内存地址

      def fun():

        pass

      print(fun)

    2、函数名可以作为变量

      def fun():

        print('aaa')

      c = fun

      c()

    3、函数名作为函数的参数

      def fun():

        print('xx')

      def index(x)

        x()

      index(fun)

    4、函数名可以作为函数的返回值

      def foo():

        def inner():

          print('inner')

        return inner

      c = foo()

      c = ()

    5、函数名可以作为容器类型的元素

      dic = {'foo':foo,'bar':bar}

      def foo():

        print('foo')

      def bar():

        print('bar')

      for i in dic:

        dic[i]()

    二、globals与locals

    1、globals():不管在任何位置返回的都是全局变量的一个字典

    2、locals():返回的是当前位置的变量的一个字典

    三、闭包函数

    1、定义:内部函数对外部作用域变量(非全局变量)的引用,并返回,就是闭包函数

    2、__closure__判断是不是闭包

    def fun():

      name = 'zs'

      def inner()

        print(name)

      print(inner.__closure)

      return inner

    3、闭包作用:

      当程序执行时,遇到函数调用,就会在内存开辟一个空间,局部命名空间,如果这个函数内部形成了闭包,那么

      它不会随着函数的结束而消失

    四、迭代器

    1、可迭代对象:iterable

      对象内部含有__iter__方法就是可迭代对象

      str,dict,list,set,tuple,range  等等

    2、dir():查看对象的所有方法

    3、判断是不是可迭代对象

      '__iter__'  in  dir()

      from collections import Iterable

        from collections import Iterator

      print('cc',isinstance(Iterable))  #判断是不是可迭代对象

         print('cc',isinstance(Iterator))  #判断是不是迭代器

    4、可迭代对象满足可迭代协议

      对象内部含有__iter__  且含有__next__方法就是迭代器

    5、可迭代对象转为迭代器

      name = 'zs'

      ite = name.__iter__

      ite = iter(name)

    6、迭代器的与可迭代对象区别:

      可迭代对象不能取值,迭代器是可以取值的(__next__)

      迭代器节省内存

      迭代器是单向的,不反复

      迭代器每次只取一个值

    7、dic = {'name':'zs','age':'18'}

      ite = dic.__iter__

      while 1:

        try:

          print(ite.__next__)

        except StopIteration:

          break 

      

  • 相关阅读:
    javaSE第十五天
    javaSE第十四天
    javaSE第十三天
    javaSE第十二天
    javaSE第十一天
    javaSE第十天
    javaSE第九天
    python011 Python3 字典
    python010 Python3 元组
    python009 Python3 列表
  • 原文地址:https://www.cnblogs.com/echo-up/p/9494344.html
Copyright © 2011-2022 走看看