Python面试常见习题
1、逻辑运算常见习题举例:
print(1 or 2 and 3 or 4) print(2 > 1 or 1 and 3 < 2)
答案:
2、编码知识
1 1 2 True
ASCII的作用:
1 ASCII 是二进制与英文大小写字母,标点符号,特殊符号的对应表,共8位,最左边一位为0是预留位。
打印出列表里的所有元素:
l1 = [1,2,3,'name',[2,3,'age'],7] for i in l1: if type(i) == list: for j in i: print(j) else: print(i)
3、a=1,b=2,用一行代码将a、b的值互换?
#将a和b的值互换: a = 1 b = 2 a,b = b,a print(a,b)
4、dict.fromkeys的用法
#dict.fromkeys的用法 #例子1 dic = dict.fromkeys([1,2,3],[]) print(dic) #{1: [], 2: [], 3: []} dic[2].append('alex') #{1: ['alex'], 2: ['alex'], 3: ['alex']} print(dic) #例子二 dic1 = dict.fromkeys(['Q','w'],['a','b']) print(dic1) #{'Q': ['a', 'b'], 'w': ['a', 'b']} dic1['w'].append('d') print(dic1) #{'Q': ['a', 'b', 'd'], 'w': ['a', 'b', 'd']}
5、浅copy和深copy
浅copy的引入:
引入浅copy #只是第一层的列表变化 l1 = [1,2,3] l2 = l1[:] l1.append(123) print(l1) #[1, 2, 3, 123] print(l2) #[1, 2, 3] #第二层列表改变 l3 = [1,[2,3],4] l4 = l3[:] #实质上是浅copy l3[1].append(666) print(l3) #[1, [2, 3, 666], 4] print(l4) #[1, [2, 3, 666], 4]
浅copy:
#浅copy #对于浅copy来说,第一层都是独立的内存地址,从第二层开始都是指向同一个内存地址,一变全都变。 l5 = [9,8,[7,6],5] l6 = l5.copy() l5[2].append(888) print(l5,id(l5),id(l5[2])) #[9, 8, [7, 6, 888], 5] 31820816 31820856 print(l6,id(l6),id(l6[2])) #[9, 8, [7, 6, 888], 5] 31819336 31820856
深copy:#深copy
#对于深copy来说,无论多少层,在内存中,都是两个独立的内存地址。 import copy l7 = [9,8,[7,6],5] l8 = copy.deepcopy(l7) l7[2].append(888) print(l7,id(l7),id(l7[2])) #[9, 8, [7, 6, 888], 5] 41955896 41955816 print(l8,id(l8),id(l8[2])) #[9, 8, [7, 6], 5] 41957976 41957936
6、列表去除重复元素:
可以用两种方法实现,用算法去做,也可以先将列表转换成字典在转换回来。利用字典的元素是不重复的特性。
list = [1,2,3,4,4,5,6,6,6,7]
set1 = set(list)
list = list(set1)
print(list)
7、三元运算法则
#三元运算法则
def max(x,y):
z = x if x > y else y
return z
ret = max(100,200)
print(ret) #200
8、globals和locals
globals返回的是当前模块的全局变量
locals返回的是局部变量,locals返回的是当前所在最小命名空间的局部变量的“拷贝”,返回的变量都是原有变量的拷贝。
9、形式参数的动态参数
#当默认参数是可变数据类型时,
#第一次调用函数和第二次调用函数用的是同一个l1列表
def func(name,l1 = [ ]):
l1.append(name)
print(l1,id(l1))
return(l1,id(l1))
print(func('小明'))
print(func('小芳'))
答案:
形式参数动态参数
10、闭包
怎样判断闭包和闭包的好处。
闭包函数:内部函数包含对外部作用域而非全剧作用域变量的引用,该内部函数称为闭包函数,函数内部定义的函数称为内部函数。
def func():
name = 'eva'
def inner():
print(name)
return inner
f = func()
f()
闭包函数的用处:Python内部有一个机制,当遇到闭包函数时,他会在内存中开启一个内存空间,不会关闭。
怎样判断闭包函数:判断闭包函数的方法__closure__
#怎样判断闭包函数:
def wrapper():
def inner():
name = '小明'
print(name)
print(inner.__closure__) # 打印出来的值是None,就不是闭包函数
inner()
wrapper()