面试题01

面试题1:下面代码的输出结果是什么,请解释。

def extend_list(val, list=[]):
    list.append(val)
    return list

list1 = extend_list(10)
list2 = extend_list(123, [])
list3 = extend_list(‘a‘)

print(list1)
print(list2)
print(list3)

输出结果:

[10, ‘a‘]
[123]
[10, ‘a‘]

解释:

(1)通过 print(id(list1))查询每个list1、list2、list3共3个对象的地址可以比对结果,其中list1和list3指向了同一内存地址,所以最后list1和list3的结果一致。

(2)代码呈现如下:

def extend_list(val, list=[]):
    list.append(val)
    return list

list1 = extend_list(10)
print(id(list1))  # 查看内存地址
list2 = extend_list(123, [])
print(id(list2))  # 查看内存地址
list3 = extend_list(‘a‘)
print(id(list3))  # 查看内存地址

print(list1)
print(list2)
print(list3)

(3)结果如下:

(4)更加深入原因如下:

  • 函数 extend_list有个默认参数list=[],默认为空,所以extend_list(10)时默认增加一个列表l1,并且将10增加至列表l1中,此时l1=[10]
  • extend_list(123,[]),相当于新增一个列表l2,并且将123追加至l2中,此时l2=[123].
  • extend_list(‘a‘),相当于在列表l1中追加元素‘a’,此时l1=[10,‘a‘]
  • 所以最后的打印结果是list1和list3的结果是[10,‘a‘],列表l2的结果是[123]

原文地址:https://www.cnblogs.com/mayugang/p/10342275.html

时间: 2024-10-26 22:11:58

面试题01的相关文章

Oracle 笔试题01

数据库:Oracle数据库select面试笔试经典题目 2013-12-13 11:21:55 分类: Oracle number(10):存10位数字,即1234567890 number(10,3):123456.789 varchar2(20):最大存放20个字节的字符,其中每个字符占2个字节,如存入字符串'abc',则实际只占用6个字节空间. null不能用==或者!=比较 ,必须用 is null 或者is not null rownum 返回当前号 rowid是一个伪列,一般情况用不

java面试题01

一.JAVA基础 1.简述你所知道的JAVA修饰符及各自的使用机制?(public.abstract.final.synchronized.super-) 01.public:允许所有客户访问 02.protected:只能在本包,本类以及该类的子类中使用 03.private:只允许在本类中使用 04.abstract:没有提供实现,需要子类提供实现. 05.static:与整个类相关,与单个对象无关. 06.final:final修饰的类,不能被继承 final修饰的方法,不能被重写 fin

安卓开发入门与面试题01(潭州安卓开发入门教程)

今天老师讲到安卓的就业市场,说的我都想去面试了,想看看市面上咱们到底可以拿到什么样的工资,做什么样的行业.说来惭愧,我还只是一个安卓开发的新手,今天就和大家一样,开始我的安卓开发梦想启航.这个是潭州安卓开发入门教程里面最基础的. 从来以为学习安卓的都是为了兴趣,原来还可以为了就业,可是好难,就像咱们Android开发入门视频教程QQ群:175229978里面很多人一样,连面试题是哪一些都不懂,不过今天我分享到群里了,也希望在这里可以帮助更多安卓开发入门的小伙伴们. 1.什么是Activity?

【程序员面试金典】面试题 01.03. URL化

题目 URL化.编写一种方法,将字符串中的空格全部替换为%20.假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的"真实"长度.(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作.) 示例1: 输入:"Mr John Smith ", 13 输出:"Mr%20John%20Smith" 示例2: 输入:" ", 5 输出:"%20%20%20%20%20" 提示: 字符串长度在[0,

iOS面试题01

1.#import和#include.@class有什么区别?#import<>和#import“”又有什么区别? 答:1.#import和#include都能完整地包含某个文件的内容,#import能防止同一个文件被包含多次: [email protected]仅仅是声明一个类名,并不会包含类的完整声明:@class还能解决循环包含的问题: 3.#import<>用来包含系统自带的文件,#import“”用来包含自定义的文件. 2.属性readwrite.readonly.ass

iOS笔试题01

1. #import 跟#include.@class有什么区别?#import<> 跟 #import”"又什么区别? 1> #import和#include都能完整地包含某个文件的内容,#import能防止同一个文件被包含多次 2> @class仅仅是声明一个类名,并不会包含类的完整声明;@class还能解决循环包含的问题 3> #import <> 用来包含系统自带的文件,#import “”用来包含自定义的文件 2. 属性readwrite,re

javaweb面试题01

1 Servlet 的生命周期 答:Web 容器加载Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其init 方法进行Servlet 的初始化,请求到达时运行其service 方法,service方法自动派遣运行与请求对应的doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy 方法. 2 forward 和redirect 的区别 答:forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个

软件测试笔试题 01

hw笔试题-01

#include <stdlib.h> #include <stdio.h> #include <string.h> int str_split(char *input, char *output, int *out) { char *p; int i,in_len,len,max,flag; in_len = strlen(input); for(len =1,max=1; len <= in_len; len++) { if( 0 != (in_len%len