Python面试大全(不断更新)


![关注微信公众号,看看技术佬的业余生活,你可以在上面获取最新资料,也可以投递你的稿件,具体请看公众号内容

【墙裂推荐关注】如果你会摄影、PS、剪视频、还会IT技术,那简直就是太完美了,你没准就是我们寻找的千里马!

只要你没有那么懒,一切皆为可能!!!  关注像素时光机,让自己变得更强大!!!很多人已经做到了,你也可以!!](https://img-blog.csdnimg.cn/20200602025255598.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1poYW9KUTUyMA==,size_16,color_FFFFFF,t_70#pic_center)

干货全拿走

亲爱的Alt 猿猿们,我是你们的强哥,接下来我会分享一些关于Python的面试题,以供大家参考。
由于时间有限,可能出现bug,希望各位亲爱的Alt 猿猿们批评指正哈~

1. 输入与输出

1.1 代码中要修改不可变数据会出现什么问题? 抛出什么异常?

代码不会正常运行,抛出 TypeError 异常。

1.2 a=1,b=2,不用中间变量交换 a 和 b 的值?

# 方法一
[1] a = a+b
[2] b = a-b
[3] a = a-b
# 方法二
[1] a,b = b,a

1.3 print 调用 Python 中底层的什么方法?

print 方法默认调用 sys.stdout.write 方法,即往控制台打印字符串。

下面这段代码的输出结果将是什么?请解释?

1. class Parent(object):
2.     x = 1
3. class Child1(Parent):
4.     pass
5. class Child2(Parent):
6.     pass
7.print Parent.x, Child1.x, Child2.x
8. Child1.x = 2
9. print parent.x, Child1.x, Child2.x
10. parent.x = 3
11. print Parent.x, Child1.x, Child2.x

结果为:
1 1 1 #继承自父类的类属性 x,所以都一样,指向同一块内存地址。
1 2 1 #更改 Child1,Child1 的 x 指向了新的内存地址。
3 2 3 #更改 Parent,Parent 的 x 指向了新的内存地址。

1.5 简述你对 input()函数的理解?

在 Python3 中,input()获取用户输入,不论用户输入的是什么,获取到的都是字符串类型的。
在 Python2 中有 raw_input()和 input(), raw_input()和 Python3 中的 input()作用是一样的,
input()输入的是什么数据类型的,获取到的就是什么数据类型的。

2. 条件与循环

2.1 阅读下面的代码,写出 A0,A1 至 An 的最终值。

1. A0 = dict(zip(('a''b''c''d''e')(12345)))
2. A1 = range(10)
3. A2 = [i for i in A1 if i in A0]
4. A3 = [A0[s] for s in A0]
5. A4 = [i for i in A1 if i in A3]
6. A5 = {i:i*i for i in A1}
7. A6 = [[i,i*i] for i in A1]

答:

1. A0 = {'a': 1'c': 3'b': 2'e': 5'd': 4}
2. A1 = [0123456789]
3. A2 = []
4. A3 = [13254]
5. A4 = [12345]
6. A5 = {0: 01: 12: 43: 94: 165: 256: 367: 498: 649: 81}
7. A6 = [[00][11][24][39][416][525][636][749][864] [981]]

2.2 range 和 xrange 的区别?

两者用法相同,不同的是 range 返回的结果是一个列表,而 xrange 的结果是一个生成器,前者是
直接开辟一块内存空间来保存列表,后者是边循环边使用,只有使用时才会开辟内存空间,所以当列表
很长时,使用 xrange 性能要比 range 好。

2.3 考虑以下 Python 代码,如果运行结束,命令行中的运行结果是什么?

1. l = []
2. for i in xrange(10):
3.     l.append({'num':i})
4. print l

再考虑以下代码,运行结束后的结果是什么?

1. l = []
2. a = {'num':0}
3. for i in xrange(10):
4.     a['num'] = i
5.     l.append(a)
6. print l

以上两段代码的运行结果是否相同,如果不相同,原因是什么?
上方代码结果:

1. [{'num':0}{'num':1}{'num':2}{'num':3}{'num':4}{'num':5}{'num':6}{'num':7}{'num':8}{'num':9}]

下方代码结果:

1. [{'num':9}{'num':9}{'num':9}{'num':9}{'num':9}{'num':9}{'num':9}{'num':9}{'num':9}{'num':9}]

原因是:字典是可变对象,在下方的 l.append(a)的操作中是把字典 a 的引用传到列表 l 中,当后
续操作修改 a[‘num’]的值的时候,l 中的值也会跟着改变,相当于浅拷贝。

2.4 以下 Python 程序的输出?

1. for i in range(50-1):
2.     print(i)

答:5 4 3 2 1

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值