python面试题

1、一行代码实现1到100的和

print (sum([i for i in range(1, 101)]))
#5050

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

a=8
def f():
  global a
  a = 10
f()
print (a)

3、列出5个python标准库

os:操作系统
sys:对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数。
math:数学函数
re:正则表达式
datetime:日期和时间

4、字典如何删除键和合并两个字典

a = {'aa':1,'bb':2}
b = {'cc':12, 'bb':34}
#删除键
del a['aa']
#a={'bb':2}
#合并字典
from collections import ChainMap
c = ChainMap(a, b)
#c={'aa':1, 'bb':2, 'cc':12}

5、谈下python的GIL

        GIL 是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。

      多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大

6、python实现列表去重的方法

#列表去重
list1 = [1,2,3,4,5,4,3,56]
list2 = list(set(list1))
print  (list2)
#list2=[1,2,3,4,5,56]

7、fun(*args,**kwargs)中的*args,**kwargs什么意思?
*args表示不定数量的参数列表;

def fun(*args):
    for i in args:
        print (i)
fun('arg1','arg2','arg3')
#arg1
#arg2
#arg3

**kwargs表示不定数量的含键值对

def fun2(**kwargs):
    for key in kwargs:
        print ("%s:%s" %(key,kwargs[key]))
fun2(arg1=1,arg2=2,arg3=3)
#arg1:1
#arg2:2
#arg3:3

8、python2和python3的range(100)的区别
python2中的range返回的是一个列表
python3中的range返回的是一个迭代值
9、一句话解释什么样的语言能够用装饰器?
函数可以作为参数传递的语言,可以使用装饰器
10、python内建数据类型有哪些
int/boot/list/tuple/dict/str
11、简述面向对象中newinit区别
12、with方法打开文件帮我们处理了什么?
答:finally中的close

14、python中生成随机整数、随机小数、0--1之间小数方法

随机整数:random.randint(a,b),生成区间内的整数。

随机小数:习惯用numpy库,利用np.random.randn(5)生成5个随机小数。

0-1随机小数:random.random(),括号中不传参

你可能感兴趣的:(python面试题)