zoukankan      html  css  js  c++  java
  • py 的 第 12 天

    1.函数名的使用,以及第一类对象

    2。闭包

    3.迭代器

    一函数名的运用:

    函数名是一个变量,但他是一个特殊的变量,与括号配合可以执行函数的变量。

    函数名的内存地址

    def  名():

      随便什么体

    print(名)

    结果是个地址

    函数名可以赋值给其他变量

    def  名():

      print(‘s’)

    print(名)

    a=名

    a()   函数调用 名

    3.函数名可以当作容器类的元素

    def 1()

      print(s)

    def 2()。。。。。

    lst=【1,2,3,。。】

    for i in lst

      i()

    4.函数名可以当作函数的参数

    def func():
    print("吃了了么")
    def func2(fn):
    print("我是func2")
    fn() # 执⾏行行传递过来的fn print("我是func2")
    func2(func) # 把函数func当成参数传递给func2的参数fn.
    传参什么的

    5.函数名可以作为函数的返回值

    def func_1():
    print("这⾥是函数1")
    def func_2():
    print("这里是函数2")
    print("这里是函数1")
    return func_2
    fn = func_2() # 执⾏行行函数1. 函数1返回的是函数2, 这时fn指向的就是上⾯面函数2 fn() # 执⾏行行上⾯面返回的函数

    二 闭包

    什么事闭包,闭包就是内层函数,对外层函数(非全局)的变量的引用。叫闭包

    我们可以使用__closure__来检测函数是否是闭包,使用函数名.__closure__返回cell就是闭包。返回None就不是闭包

    多层嵌套就是一层一层返回没有打印就不返回,11天写的先可最左面的来,没有的打印的话

    由它我们可以引出闭包的好处。由于我们在外界可以访问内部函数。那这个时候内部函数访问的时间和时机就不一定了,因为在外部,我可以选择在任意的时间去访问内部函数。这个时候。想一想。我们之前说过,如果一个函数执行完毕,则这个函数中的变量以及局部命名空间中的内部都将会被销毁,在闭包中,如果变量被销毁了,那内部函数将不能正常执行,所以python规定。如果你在内部函数中访问了外层函数中的变量。那么这个变量将不会消亡,将会常驻在内存中,也就是说,使用闭包,可以保证外层函数中的变量在内存中常驻,还有一个好处就是1次常驻,万次使用

    三迭代器

    我们之前一直在用可迭代对象,进行迭代操作,那么到底什么是可迭代对象。本小节主要讨论可迭代对象。首先我们先回顾一下目前我们所熟知的可迭代对象有哪些:

    str, list, tuple, dict, set.为什么他们都是可迭代对象呢,因为他们遵循了迭代协议   这个协议我们可以用dir看一下

    print(dir(XXX))  如果里面有__iter__那么他就是一个可迭代对象  这是查看是否为可迭代对象的第一种方法,我们还可以通过isinstence()函数,来看一个对象是什么类型

    我们用__next__()来获取一个迭代器中的元素,我们之前for的工作原理也是这样


    lst = [1,2,3]
    lst_iter = lst.__iter__()
    while True:
    
        try:
            i = lst_iter.__next__()
            print(i)
    
        except StopIteration:
            break
    

    Iterable: 可迭代对象. 内部包含__iter__()函数
    Iterator: 迭代器. 内部包含__iter__() 同时包含__next__().迭代器的特点:

    1. 节省内存.
    2. 惰性机制
    3. 不能反复, 只能向下执⾏行行.

  • 相关阅读:
    NumPy 位运算
    NumPy 数组迭代
    NumPy 广播
    NumPy 基于数值区间创建数组
    NumPy 数组切片
    NumPy 基于已有数据创建数组
    NumPy 数组创建
    NumPy 数据类型
    NumPy ndarray
    区块链技术学习指引
  • 原文地址:https://www.cnblogs.com/Mrszhao/p/9477054.html
Copyright © 2011-2022 走看看