def f(x,l=[]):for i in range(x):l.append(i*i)print lf(2)
f(3,[3,2,1])
f(3)

答案

[0, 1]
[3, 2, 1, 0, 1, 4]
[0, 1, 0, 1, 4]

呃?

第一个函数调用十分明显,for循环先后将0和1添加至了空列表l中。l是变量的名字,指向内存中存储的一个列表。

第二个函数调用在一块新的内存中创建了新的列表。l这时指向了新生成的列表。之后再往新列表中添加0、1、2和4。很棒吧。

第三个函数调用的结果就有些奇怪了。它使用了之前内存地址中存储的旧列表。这就是为什么它的前两个元素是0和1了。

不明白的话就试着运行下面的代码吧:

l_mem = []l = l_mem           # the first call
for i in range(2):l.append(i*i)print l             # [0, 1]l = [3,2,1]         # the second call
for i in range(3):l.append(i*i)print l             # [3, 2, 1, 0, 1, 4]l = l_mem           # the third call
for i in range(3):l.append(i*i)print l             # [0, 1, 0, 1, 4]

本文首发于Python黑洞网,csdn同步跟新

Python面试题之下面代码会输出什么相关推荐

  1. python手写代码面试_常见Python面试题—手写代码系列

    原标题:常见Python面试题-手写代码系列 1.如何反向迭代一个序列 #如果是一个list,最快的方法使用reverse tempList = [1,2,3,4] tempList.reverse( ...

  2. python手写代码面试_常见Python面试题 — 手写代码系列

    原标题:常见Python面试题 - 手写代码系列 作者: Peace & Love 来自:https://blog.csdn.net/u013205877/article/details/77 ...

  3. python面试代码题_常见python面试题-手写代码系列

    原博文 2019-08-13 13:50 − 1.如何反向迭代一个序列 #如果是一个list,最快的方法使用reversetempList = [1,2,3,4]tempList.reverse()f ...

  4. 常见Python面试题 — 手写代码系列

    1.如何反向迭代一个序列 #如果是一个list,最快的方法使用reverse tempList = [1,2,3,4] tempList.reverse() for x in tempList: pr ...

  5. 666!Python 仅用3行代码就输出花式字符串

    点击上方"编程派",选择设为"设为星标" 优质文章,第一时间送达! 高逼格的日志 相信Java程序员看到上面的图,一定不会陌生.没错,springboot的启动 ...

  6. 一道Python面试题,据说大部分人都中招了,纷纷开始怀疑自己

    无意间,看到这么一道Py无意间,看到这么一道Python面试题:以下代码将输出什么? def testFun(): temp = [lambda x : i*x for i in range(4)] ...

  7. python fun_一道神奇的Python面试题,你会吗?

    原标题:一道神奇的Python面试题,你会吗? 无意间,看到这么一道Python面试题:以下代码将输出什么? def testFun: temp = [lambda x : i*x for i in ...

  8. 浅入深谈:一道Python面试题,让我明白了殊途同归,却开始怀疑自己

    无意间,看到这么一道Python面试题:以下代码将输出什么? 脑中默默一想,这还用说么,肯定是: 0 2 4 6 最后一看答案,竟然是: 6 6 6 6 于是带着怀疑的心态(其实是不服输,不认错),打 ...

  9. 一道Python面试题

    无意间,看到这么一道Python面试题:以下代码将输出什么? def testFun(): temp = [lambda x : i*x for i in range(4)] return temp ...

最新文章

  1. 一文全面了解基于内容的推荐算法
  2. AI开发者大会:2020年7月3日09:30--09:50司罗《为商业搭建语言桥梁》
  3. 开课提醒 | 听顶会大佬透析前沿算法,解密人脸识别技术
  4. 在Linux系统下防火墙开放所需要访问的端口号
  5. OPENSSL ENGINE机制
  6. 4种不同类别的机器学习概述
  7. Flutter 底部向上动画弹出的菜单选项
  8. IntelliJ IDEA lombok插件的安装和使用
  9. 分析攻击IP来源地并画出饼图 1
  10. Mycat的简单使用(三)【分库分表】
  11. python pdfminer的功能_python:pdfminer接口测试
  12. IMTOKEN 2.9.9官网1:1双端,用户管理系统,后台可查询用户使用情况
  13. 外国官方网站下载文件速度缓慢
  14. 互联网寒冬,如何花三个月东山再起........
  15. 机器学习算法-EM算法
  16. J.P. Morgan:AI for Investing(脱水解读)
  17. 一家之言:说说 JavaScript 计时器的工作原理
  18. 新松机器人BG总裁高峰_新松机器人总裁曲道奎博士出席高工机器人产业高峰论坛...
  19. kafka代码初步涉猎,用代码发送消息到客户端
  20. 程序员该用哪种姿势来理财

热门文章

  1. ASP基础教程之ASP AdRotator 组件的使用
  2. redis之proxy集群之twemproxy
  3. Redis集群之官方集群
  4. python分片上传_python 分片上传大格式
  5. xcode 怎么调用midi开发录音_音频应用专业录音声卡:雅马哈UR242声卡教程
  6. 4.c++模式设计-建造者模式
  7. STM32学习——MPU6050姿态传感器
  8. TCP/IP数据包结构详解
  9. s3c6410存储器映射
  10. python :使用 __getitem__ 和 __iter__ 可以使类成为一个迭代器