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的不同结果不同

  • 相关阅读:
    Lucene4.5.1之添加索引、更新索引、删除索引、查找数据
    DWR 2.0.10之简单测试
    SNMP OID列表
    zabbix low-level discovery 监控mysql
    Linux系统负载查询
    MySQL 调优
    Linux 下DNS详解
    C语言计算两个日期间隔天数
    Linux vmstat命令详解
    select函数的详细使用(C语言)
  • 原文地址:https://www.cnblogs.com/bdzxh/p/14069683.html
Copyright © 2011-2022 走看看