如何面试,调整心态。
- 相信自己,可以的。
- 这两周非常重要,总结梳理。
- 面试技巧,知识点总结到本上。切忌!!!自我介绍用背的方式。
函数:
函数的参数。
- 给你出例子,看代码写结果。
- 默认参数为可变的数据类型。
def func(a,b,*args,c,sex='男',**kwargs): print(c) # 仅限关键字参数 func(1,2,4,5,6,c=666)
def foo(a,b,*args,c,sex=None,**kwargs): print(a,b) print(c) print(sex) print(args) print(kwargs) # foo(1,2,3,4,c=6) # foo(1,2,sex='男',name='alex',hobby='old_woman') # foo(1,2,3,4,name='alex',sex='男') # foo(1,2,c=18) # foo(2, 3, [1, 2, 3],c=13,hobby='喝茶') # foo(*[1, 2, 3, 4],**{'name':'太白','c':12,'sex':'女'})
作用域
# 修改一个全局变量 a = 'alex' def func(): # global a a += 'aaa' func() # 声明一个全局变量 def func(): global r r = 666 func() print(r)
*处理剩余元素
# *处理剩余元素 # a,*b,c = [1, 2, 3, 4, 5] # a,*b, c = range(5) # print(a,b,c)
闭包:
- 内层函数对外层函数非全局变量的引用。
- 存在嵌套函数中。
- 内层函数的函数名必须作为返回值返回。
闭包的作用?
被引用的变量被称为自由变量,不会随着函数的结束而消失,保证数据安全。
闭包的应用: 装饰器。
装饰器。
手写一个装饰器。
def wrapper(func): # f = func def inner(*args, **kwargs): """执行之前的代码""" print(111) # 3 ret = func(*args,**kwargs) """执行之后的代码""" print(222) # 5 return ret return inner @wrapper f = wrapper(f) 1 f = inner def f(): print('in f') # 4 f() # inner() # 2
利用装饰器手写一个登陆认证。自己完成。
pass
装饰器的执行流程。
多个装饰器装饰同一个函数的流程。
def wrapper1(func): def inner1(*args, **kwargs): print('in inner1') # 2 ret = func(*args,**kwargs) print(555) # 4 return ret return inner1 def wrapper2(func): def inner2(*args, **kwargs): print('in inner2') # 1 ret = func(*args,**kwargs) print(777) # 5 return ret return inner2 @wrapper2 @wrapper1 def func(): print(666) # 3 func() ''' in inner2 in inner1 666 555 777 '''
迭代器
生成器:
生成器本质上就是迭代器,
生成器与迭代器区别:迭代器是python直接给你提供的,或者通过iter()转化的,生成器是自己通过python代码构建。
构建生成器的几种方式:
- 通过生成器函数。(yield)
- 生成器推导式。
- 有一部分是python给你提供的。
生成器表达式列表推导式考点。
[1,4,9,16,.....100]
['class1', 'class 3', 'class5',]
循环模式:
[变量(加工后的变量) for 变量 in iterable]
筛选模式:
[变量(加工后的变量) for 变量 in iterable if 条件]
yield from 考点
yield from 代替了生成器的内层循环,提高效率。
yield from def func(): # yield 1 # yield from [1,2,3] for i in range(1,4): yield i obj = func() print(next(obj)) print(next(obj)) print(next(obj))
def chain(*iterables): for it in iterables: for i in it: yield i g = chain('abc',(0,1,2)) print(list(g)) # 将迭代器转化成列表
内置函数
max, min,filter,map,zip,sorted,reduce,
与lambda结合。
l1 = [ {'sales_volumn': 0},
{'sales_volumn': 108},
{'sales_volumn': 337},
{'sales_volumn': 475},
{'sales_volumn': 396},
{'sales_volumn': 172},
{'sales_volumn': 9},
{'sales_volumn': 58},
{'sales_volumn': 272},
{'sales_volumn': 456},
{'sales_volumn': 440},
{'sales_volumn': 239}]
def num(): return [lambda x:i*x for i in range(4)] print([m(2)for m in num()])
def func(): for num in range(10): pass v4 = [lambda :num+10,lambda :num+100,lambda :num+100,] result1 = v4[1]() result2 = v4[2]() print(result1,result2) func()
def demo(): for i in range(4): yield i g=demo() g1=(i for i in g) g2=(i for i in g1) print(list(g1)) print(list(g2))
模块
列举你使用的内置模块,不少于10个.
os sys random time datetime hashlib logging json pickle re
uuid socket socketserver threading mutiprocess collections
functiontools
列举一下第三方模块
requests beatifusoup Django flask pillow pandas gevent greenlet redis pymysql .....
一些模块中的一些小功能.
re模块 search 与match的区别?
面向对象
面向对象的优势:
结构分析: 相似功能的集合.代码更加清晰化,标准化.
站在上帝的角度: 构建类, 一切以对象为核心,得到对象的天下.
得到对象可以得到对象属性,从属于类的属性,方法,可以得到父类的属性方法.
实例化对象发生了三件事:
class A: pass obj = A()
- 先调用object类
__new__
方法在内存中开辟一个对象空间,并返回. - 自动执行
__init__
方法,并将对象空间传给self. - 在
__init__
方法里面给其封装属性.
- 先调用object类
函数vs方法:
只要是隐形传参的就是方法,显性传参的就是函数.
面向对象的三大特性: 继承,封装,多态.
多态: a = 'sfads' a = 123 a = [1,2,3]
java: int a = 123
单继承:
对象如何既执行子类的方法,又执行父类的方法.
重构父类的方法.
class A: def func(self): print('in A func') class B(A): def func(self): # A.func(self) super(B,self).func() print('in B func') obj = B() obj.func()
多继承:
python面向对象:
新式类: 继承object类. C3算法. mro()
C3算法: 建议你们过一遍.
经典类:不继承object类.深度优先.
私有成员:只能在类的内部调用,不能在派生类,或者类的外部调用.
私有类的属性,私有类的方法,私有对象属性.
属性property:
设置属性的两种方式: 装饰器的形式. 实例化对象的形式.
class Foo: @property def AAA(self): print('get的时候运行我啊') @AAA.setter def AAA(self,value): print('set的时候运行我啊') @AAA.deleter def AAA(self): print('delete的时候运行我啊') obj = Foo() obj.AAA obj.AAA = 'alex' del obj.AAA
class Foo: def get_AAA(self): print('get的时候运行我啊') def set_AAA(self,value): print('set的时候运行我啊') def delete_AAA(self): print('delete的时候运行我啊') AAA=property(get_AAA,set_AAA,delete_AAA) #内置property三个参数与get,set,delete一一对应 f1=Foo() f1.AAA f1.AAA='aaa' del f1.AAA
object 与 type类什么关系?
python中一切皆对象,类是不是个对象? 大部分类都是type类的对象,包括object类也是type类的对象.
type类 是object类的子类.
双下方法.
- 你用过的双下方法?
- 比如
__call__
等方法如何调用? __new__
方法, 单利模式.__enter__
__exit__
项目整体流程
项目的整体流程
项目的表结构设计.
项目的亮点是什么?
项目中不足?
项目中你负责哪一步?
你在项目中遇到的困难问题是什么? 怎么解决的?
你的项目有没有拓展性?
你的项目中用的新的技术点?
来源:https://www.cnblogs.com/Doner/p/11421339.html