一、前言
部分目录如下:

二、试题分享
一. Python基础
1)字典推导式
d = {
key:value for (key,value) in iterable}
2)反转字符串 “aStr”
print("aStr"[::-1])
3)将字符串 “k:1 |k1:2|k2:3|k3:4”,处理成字典 {k:1,k1:2,…}
完整试题 公众号:python砖家 回复:11 str1 = "k:1|k1:2|k2:3|k3:4" def str2dict(str1): dict1 = {
} for iterms in str1.split('|'): key,value = iterms.split(':') dict1[key] = value return dict1 #字典推导式 d = {
k:int(v) for t in str1.split("|") for k, v in (t.split(":"), )}
4)下面代码的输出结果将是什么
list = ['a','b','c','d','e'] print(list[10:])
5)给定两个列表,怎么找出他们相同的元素和不同的元素
list1 = [1,2,3] list2 = [3,4,5] set1 = set(list1) set2 = set(list2) print(set1 & set2) print(set1 ^ set2)
二. 企业面试题
6)python新式类和经典类的区别
- 在python里凡是继承了object的类,都是新式类
- Python3里只有新式类
- Python2里面继承object的是新式类,没有写父类的是经典类
- 经典类目前在Python里基本没有应用
- 保持class与type的统一对新式类的实例执行a.class与type(a)的结果是一致的,对于旧式类来说就不一样了。
- 对于多重继承的属性搜索顺序不一样新式类是采用广度优先搜索,旧式类采用深度优先搜索。
7)python中内置的数据结构有几种
- 整型 int、 长整型 long、浮点型 float、 复数 complex
- 字符串 str、 列表 list、 元祖 tuple
- 字典 dict 、 集合 set
- Python3 中没有 long,只有无限精度的 int
8)python如何实现单例模式?请写出两种实现方式
8.1 第一种方法:使用装饰器
def singleton(cls): instances = {
} def wrapper(*args, kwargs): if cls not in instances: instances[cls] = cls(*args, kwargs) return instances[cls] return wrapper @singleton class Foo(object): pass foo1 = Foo() foo2 = Foo() print(foo1 is foo2) # True
8.2 第二种方法:使用基类
New 是真正创建实例对象的方法,所以重写基类的new 方法,以此保证创建对象的时候只生成一个实
例
完整试题 公众号:python砖家 回复:11 class Singleton(object): def __new__(cls, *args, kwargs): if not hasattr(cls, '_instance'): cls._instance = super(Singleton, cls).__new__(cls, *args, kwargs) return cls._instance class Foo(Singleton): pass foo1 = Foo() foo2 = Foo() print(foo1 is foo2) # True
三. Python高级
9)Python中类方法、类实例方法、静态方法有何区别?
10)python函数重载机制
函数重载主要是为了解决两个问题。
- 可变参数类型。
- 可变参数个数。
11)对缺省参数的理解
12)生成器,迭代器的区别
迭代器
是遵循迭代协议的对象。用户可以使用 iter() 以从任何序列得到迭代器(如 list, tuple,
dictionary, set 等)。另一个方法则是创建一个另一种形式的迭代器 —— generator 。要获取下一个元
素,则使用成员函数 next()(Python 2)或函数 next() function (Python 3) 。当没有元素时,则引
发 StopIteration 此例外。若要实现自己的迭代器,则只要实现 next()(Python 2)或 next ()
生成器(Generator)
只是在需要返回数据的时候使用yield语句。每次next()被调用时,生成器会返
回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)
区别
生成器能做到迭代器能做的所有事,而且因为自动创建iter()和next()方法,生成器显得特别简
洁,而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序
状态的自动方法,当发生器终结时,还会自动抛出StopIteration异常。
三、总结
大家拿到资料后一定得看啊,不是拿到资料就会了!
??已打包好PDF,完整版在下方,回复:11 ??
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211996.html原文链接:https://javaforall.net
