Python面试题练习

Posted windyrainy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python面试题练习相关的知识,希望对你有一定的参考价值。

1、实现1--100之和

技术图片
1 #解答一
2 print sum(xrange(101))
3 
4 #解答二
5 s=0
6 for i in xrange(101):
7     s = s + i
8 print s
View Code

2、如何在一个函数内部修改全局变量

技术图片
#coding=utf-8
name = "ryan"   #全局变量
def fun():
    country = "China" #局部变量
    print name
    global name     #声明全局变量
    name = "joe"    #修改全局变量
    print name
fun() 
print name
View Code

3、谈下GIL

技术图片
GIL是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。
多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大。
View Code

4、实现列表去重的方法

技术图片
#coding=utf-8
#解答一:使用Set集合
a = [1,2,3,3,4,4,4]
a = list(set(a))

#解答二
a = [1,2,3,3,4,4,4]
b=[]
for i in a:
    if i not in b:
        b.append(i)
a=b

#解答三
a = [1,2,3,3,4,4,4]
c={}
for i in a:
    if a.count(i) > 1:
        c.update({a.count(i):i})
for i in c:
    for j in xrange(i-1):
        a.remove(c[i])
View Code

 5、fun(*args,**kwargs)中的*args,**kwargs什么意思?

技术图片
#*args是用来发送一个非键值对的可变数量的参数列表给一个函数
#**kwargs是用来发送一个不定长度的键值对的参数给一个函数
View Code

6、python2和python3的range(100)的区别

技术图片
#python2返回列表,python3返回迭代器,节约内存
View Code

7、一句话解释什么样的语言能够用装饰器?

技术图片
#函数可以作为参数传递的语言,可以使用装饰器
View Code

8、简述面向对象中__new__和__init__区别

 

以上是关于Python面试题练习的主要内容,如果未能解决你的问题,请参考以下文章

Python--练习及面试题

Python练习10

python面试题&练习题之运算符与if控制

前端面试题之手写promise

Python练习28

Python练习28