No.18总结

No.18

今日概要

  • 回顾和补充
  • 作业讲解

内容详细

1.Python入门

1.1环境的搭建

mac系统上搭建python环境。

环境变量的作用:方便在命令行执行可执行程序,将可执行程序所在的目录添加到环境变量,以后无需再输入全路径。

1.2变量命名

  • 变量

    name = 'alex'
    
  • 全局变量

    NAME = 'oldboy'
    #在局部作用域中若想重新赋值全局变量要使用global关键字
    global NAME
    NAME = 'alex'
    
  • 函数

    def func_list():
        pass
    
  • 常量

    不允许修改的值
    Python中没有常量只能进行约定,其它开发语言有常量。
    

1.3运算符

v = 1 or 2  → 1
v = 0 or 2  → 2 
v = 1 and 2  → 2
v = 0 and 2  → 0 
val = v if v else 666
#对于简单的三元运算可以简写
val = v or 666 #源码中会见到

is 和 == 的区别

1.4数据类型

  • int

    • 整型
    • 其它进制转换成十进制int('0b11011',base=2)
    • py2/py3区别
      • int / long
      • 除法
  • bool

    • 0 None 空
  • str(字符串类,一般用于内存中做数据操作)

    v = 'alex' # unicode编码存储在内存
    
  • bytes(字节流类,一般用于数据存储和网络传输)

    v = 'alex'.encode('utf-8') # 将字符串转换成字节(由unicode编码转换为uft-8编码)
    v = 'alex'.encode('gbk') # 将字符串转换成字节(由unicode编码转换为gbk编码)
    
  • list

  • tuple

  • dict

  • set

  • None

1.5编码

  • Python默认解释器编码
    • Py2
    • Py3
  • 以什么编码存储就要以什么编码打开(建议Pycharm设置成UTF-8编码)。
  • 常见的编码
    • ascii
    • unicod
    • utf-8
    • gbk
    • gb2312

1.6深浅拷贝

针对可变类型,将其重新创建一份地址。

  • 浅拷贝:第一层
  • 深拷贝:所有层
import copy
v = [11,22,33,[1,2,3]]

v1 = copy.copy(v)
v2 = copy.deepcopy(v)

1.7Py2和Py3区别

  • 字符串类型不同▲▲▲

    • py2中unicode类 是 py3中的str类
    • py2中str类 是 py3中的bytes类
  • 默认解释器编码

  • 输入输出

  • int

    • int / long
    • 除法
  • range / xrange

  • 模块和包

    • __init__.py
  • 字典

    • keys
      • py2:列表
      • py3:迭代器,可以循环不可以索引取值。
    • values
      • py2:列表
      • py3:迭代器
    • items
      • py2:列表
      • py3:迭代器
  • map/filter

    • py2:返回列表
    • py3:返回迭代器,可以循环不可以索引取值。

2.函数

2.1内置函数

  • 常用的内置函数:open / id / type / len / range ...
  • is 和 == 的区别?通过id来进行检查

2.2自定义函数

  • 函数式编程:增加代码可读性以及重用性。

  • 函数的基本结构:

    def func(name,age):
        '''
        函数是干什么的
        '''
        return None
    
  • 函数作参数

  • 函数作变量

  • 函数作返回值

    • 闭包
    • 装饰器
  • 生成器

    def func():
        print(123)
        yield 1
        yield 2
    v = func()
    # v得到是一个生成器
    # 循环v时或者执行__next__()方法时,函数内部代码才会执行。
    
    # yield from
    def func():
        yield 1
        yield 2
        yield from base()
        yield 3
    
    def base():
        yield 88
        yield 99
    
    result = func()
    for item in result:
        print(item)
    

    生成器推导式

    v1 = [ i for i in range(10)] #列表推导式,立即循环创建所有元素
    v2 = ( i for i in range (10)) #生成器推导式,创建了一个生成器,内部循环未执行。
    
    #def func():
    #    result = []
    #    for i in range(10):
    #        result.append(i)
    #    return result
    #v1 =func
    v1 = [ i for i in range(10)]
    print(v1)
    
    #def func():
    #    for i in range(10):
    #        yield i
    #v2 = func()
    v2 = ( i for i in range (10))
    print(v2)
    
    #示例1
    def func():
        result = []
        for i in range(10):
            def f():
                return i
            result.append(f)
        return result
    v1 = func()
    for item in v1:
        print(item)
        
    #示例2
    def func():
        for i in range(10):
            def f():
                return i
            yield f
    v1 = func()
    for item in v1:
        print(item())
        
    #示例3
    v1 = [lambda :i for i in range(10)]
    v2 = (lambda :i for i in range(10))
    for item in v2:
        print(item())
    
  • 迭代器

3.模块

3.1内置模块

  • 常见的内置模块:json / datetime / time / os / sys

3.2第三方模块

  • requests
  • xlrd

3.3自定义模块

  • 文件
  • 文件夹 / 包

3.4使用模块

  • 导入

    • import 模块

    • from 模块.模块 import 模块

    • from 模块.模块.模块 import 函数

    • 相对导入 [不推荐]

      #根目录中的子目录文件相互导入
      from . import xxx
      from .. import xxx
      

    注意:文件和文件夹命名不能和导入的模块名称相同,否则就会直接在当前的目录中查找。

  • 调用内部功能

    • 函数()
    • 模块.函数()
  • 主文件(当前运行的文件)

    import page
    if __name__ == '__main__':
        page.pager()
    #只要在当前文件写入并执行主文件代码,其它文件即使导入了page模块也无法使用pager函数。
    

4.其它

  • 推导式
  • 三元运算
  • lambda表达式
posted @ 2020-03-19 15:16  Sco_Lunatic  阅读(104)  评论(0)    收藏  举报