今天总结一下python中常见的面试题:
1.is与==的区别
is比较变量内存地址和值是否相等,==仅仅比较变量的值是否相等
需要注意:
当变量的值较小时(a=1, b=1时,a is b的值是True,这是由于python定义变量时底层的实现
决定的,例如小整数对象池)两个变量的id值就会相同,导致is的值为True。
2.列表排序
sort():将原列表排序
soretd():生成新的一排序列表,原列表不变
In [47]: l1
Out[47]: [1, 4, 3, 8, 3]
In [48]: sorted(l1)
Out[48]: [1, 3, 3, 4, 8]
In [49]: l1
Out[49]: [1, 4, 3, 8, 3]
In [51]: l1.sort()
In [52]: l1
Out[52]: [1, 3, 3, 4, 8]
sort()函数的应用:
# 按照info中字典的name排序
In [39]: info = [{"name": 'laownag', "age": 20}, {"name": 'laoli',
"age": 21}, {"name": 'laoliu', "age": '23'}]
# 使用参数key,参数值是一个函数
In [40]: info.sort(key=lambda x:x["name"])
In [41]: info
Out[41]:
[{'name': 'laoli', 'age': 21},
{'name': 'laoliu', 'age': '23'},
{'name': 'laownag', 'age': 20}]
sort()中的两个参数:
参数1:key,参数值是一个函数,依据这个函数排序
参数2:reverse,是否降序排列
3.装饰器
现场写一个装饰器,比如:写一个装饰器,统计函数的执行时间,执行时间大于2秒的输出bad;否则输出good
import time
def wrapper(func):
def inner():
start = time.time()
ret = func()
end = time.time()
if (end - start) > 1:
print("bad")
else:
print("good")
return inner
写一个装饰器,可以捕获函数忠执行的异常:
def wrapper_cacth_exception(func):
"""
捕获异常
:param func:
:return:
"""
def wrapper(a, b):
try:
return func(a, b)
except Exception as e:
return e
return wrapper
4.统计list中每个值出现的次数,这个题目主要考察使用collections中的defaultdict
from collections import defaultdict
users = ["wyzane1", "wyzane2", "wyzane3", "wyzane2"]
default_dict = defaultdict(int)
for user in users:
default_dict[user] += 1
print(default_dict)
当然,还有另外一种方法也可以:主要使用了dict中的setdefault方法
user_dict = {}
for user in user:
user_dict.setdefault(user, 0)
user_dict[user] += 1
print(user_dict)
5.mysql常用引擎及区别
这个就自己百度吧。
6.enumerate的使用
for i in enumerate(range(3)):
print(i)
打印结果:
(0, 0)
(1, 1)
(2, 2)
7.合并两个List的方法
l1 = [1, 2, 3]
l2 = [4, 5, 6]
l1.extend(l2) # 把l2的元素放入l1中
l1 + l2 # 生成一个新的列表,包含l1和l2的元素
未完待续...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。