zoukankan      html  css  js  c++  java
  • python基础(二十一、面试题)

    17.面试题(难)
    1)面试题1
    友情提示:惰性机制,不到最后不拿值

    2)面试题2
    (1)求输出结果

    改写代码:

    通过调试模式,可以清楚看到代码的执行过程。
    lst1.append(fn):列表lst1中存储的是fn函数的地址,4个函数中保存的函数都是i*x
    lst2.append(m(2)):才开始真正执行函数,此时i=3,实参x=2,所以列表中4个元素都是6

    (2)如何得到你想要的结果[0, 2, 4, 6]

    返回值(lambda x: ix for i in range(4))的类型是生成器

    改写代码:

    for m in mul():第一次调用mul(),i=0,返回fn。接着执行lst.append(m(2)),此时的m就是fn函数的地址,调用m(2)=0
    2=0。最后将0添加到列表lst中。
    后面的过程以此类推,最终得到列表[0, 2, 4, 6]

    (3)两个代码的区别:
    代码1)返回的是列表,列表中保存着函数地址,函数表达式都是ix。调用函数时,循环从列表中取值,i不会循环,i已经是3了,传参x=2,结果是6.

    代码2)返回的是生成器,for m in mul()每次取值,执行到yield就返回了函数地址,紧接着就会执行m(2)调用fn(x)数。得到i
    x的结果,随着i的不同结果不同

  • 相关阅读:
    2020软件工程第四次作业04
    2020软件工程作业02
    2020软件工程作业01
    2020软件工程个人作业06——软件工程实践总结作业
    2020软件工程作业05
    2020软件工程作业00—问题清单
    2020软件工程作业03
    2020软件工程作业02
    2020软件工程作业01
    小小小-冲刺集合
  • 原文地址:https://www.cnblogs.com/bdzxh/p/14069683.html
Copyright © 2011-2022 走看看