今天總結一下python中常見的面試題:python
1.is與==的區別
is比較變量內存地址和值是否相等,==僅僅比較變量的值是否相等
須要注意:
當變量的值較小時(a=1, b=1時,a is b的值是True,這是因爲python定義變量時底層的實現
決定的,例如小整數對象池)兩個變量的id值就會相同,致使is的值爲True。mysql
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()函數的應用:sql
# 按照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,是否降序排列app
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
寫一個裝飾器,能夠捕獲函數忠執行的異常:code
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的元素
未完待續...