Python基础
1. Python和其他语言有什么区别?
# python是解释型语言代码运行期间逐行翻译成目标机器码,下次执行时,要逐行解释 # - 解释型:边解释边执行(python、PHP) # - python 弱类型 # - 编译型:编译后再执行(C、Java、C#)
2. 你为什么要学Python?
# a. 因为python相对其他语言非常优雅简洁,有着丰富的第三方库,我感觉很方便、很强大; # b. 还有就是,我感觉Python简单易学,生态圈庞大,例如:web开发、爬虫、人工智能等 # c. 而且未来发展趋势也很不错。 # 了解python的途径 # a. 亲朋和学长的建议 # b. 在我学Python之前,他们都是业内人士,对行业趋势比较了解
基本数据类型
3、常用数据类型&方法
可哈希:list dict set
不可哈希:int str bool None tuple
# - 字符串 strip()去除 find()找不到返回-1 、index()找不到报错 split()分割 join()拼接 replace()分割 center()填充 # - 字典 pop() 删除 update() clear()清空 get() has_get() dict.items() # - 元组tuple 只读 按str索引方法去查 # - 列表 inset()按索引增加 extend()迭代增加 conut() sort()排序 index() rserver()反转 # - 集合 add() update() remove() del() pop() clear() 交集$ 并集| 差集- # - collections Python内建的一个集合模块,提供了许多有用的集合类。 # Counter是一个简单的计数器,例如,统计字符出现的个数: # OrderedDict可以实现一个FIFO(先进先出)的dict,当容量超出限制时,先删除最早添加的Key: # deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈: # defaultdict使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict:
函数
装饰器
4、什么是装饰器,在哪里用过?
# 能够在不修改原函数代码的基础上,在执行前后进行定制操作; 闭包函数的一种应用. - 能手写出来 - 应用场景: - flask路由系统 - flask befor_request - csrf - django 内置认证 - django 的缓存
- 高阶函数 - 闭包 - 装饰器 - functools.wraps(func)
5、写出一个装饰器
import functools def warpper(func): @functools.wraps(func) #不改变原函数属性 def inner(*args,**kwargs): #执行函数前 return func(*args,**kwargs) #执行函数后 return inner # 1. 执行wapper函数,并将被装饰的函数当做参数。 wapper(index) # 2. 将第一步的返回值,重新赋值给 新index = wapper(老index) @warpper #index=warpper(index) def index(x): return x+100
6、为什么要用装饰器?
7、生成器
生成器:一个函数内部存在yield关键字(必问) 应用场景: - range()/xrange - py2:range(10000000),立即创建;xrange(10000000),是生成器 - py3:range(10000000)生成器; - redis获取值 - conn = Redis(......) - v=conn.hscan_iter() # 内部通过yield 来返回值 - stark组件中 - 前端调用后端的yield
8、迭代器
迭代器:内部实现__next__方法,帮助我们向后一个一个取值. 可迭代对象: 一个类中内部实现__iter__方法,且返回一个迭代器 迭代器应用场景: - wtforms里面对form对象进行循环时,显示form中包含的所有字段 - 列表\字典\元组 总结: 如让一个对象可以被for 循环
9、闭包
# 内部函数含有对 外部作用域而非全局作用域名字 的引用,该内部函数称为闭包函数; # 判断闭包函数的方法:__closure__,输出的__closure__有cell元素说明是闭包函数 def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >>>bar = foo() >>>bar() 12 说明: bar在foo函数的代码块中定义。我们称bar是foo的内部函数。 在bar的局部作用域中可以直接访问foo局部作用域中定义的m、n变量。 简单的说,这种内部函数可以使用外部函数变量的行为,就叫闭包。 闭包的意义与应用:延迟计算: 闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域 #应用领域:延迟计算(原来我们是传参,现在我们是包起来) 装饰器就是闭包函数的一种应用场景