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变量。
简单的说,这种内部函数可以使用外部函数变量的行为,就叫闭包。

闭包的意义与应用:延迟计算:

闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域

#应用领域:延迟计算(原来我们是传参,现在我们是包起来)

装饰器就是闭包函数的一种应用场景
闭包函数

相关文章: