Python全栈工程师(每周总结:3)

 

 ParisGabriel
 
                                                         



                 每天坚持 一天一篇 点个订阅吧  灰常感谢    当个死粉也阔以

                                            week summer:

                      Python人工智能从入门到精通

 

 

 

 

 

函数式编程:
  是指一系列函数解决问题
  每一个函数完成细小的功能,一系列函数的任意组合可以完成大问题
  函数仅接受输入并产生输入,不包含任何影响输出的内部 状态
函数的可重用性:
  如果一个函数的输入参数一定,则返回结果必须一定的函数
  称为可重用函数
  可重入和不可重入区别就是访问除局部变量以外的变量
函数式编程要求:
  def 创建函数最好不要访问局部作用域变量这样可以保证
  结果的唯一性(可重入性
高阶函数 high order function:
  满足下列条件之一的就是高阶函数
    1.函数接受一个或多个函数作用参数传入
    2.函数返回一个函数

内建高阶函数:
  map,filter,sorted

  map(func, *iterables):
    用函数和对可迭代对象中的每一个元素作为参数计算出新的可迭代对象,
    当最短的一个可迭代对象不再提供数据时此可迭代对象生成结束
    func 函数  *iterables  排列
  filter(function, iterable):
    筛选可迭代对象iterable中的数据,返回一个可迭代器对象,此可迭代对象
    将对iterable进行筛选.函数function 将iterable中的每个元素进行求值
    返回False则将此数据丢弃返回True,则保留此数据


  sorted(iterable, key=None, reverse=False):
    将原可迭代对象的数据进行排序,生成排序后的列表iterable 可迭代对象
    key 函数是用来提供一个值,这个值将作为排序的依据reverse 标志用来设
    置是否降序排序


返回可迭代对象函数:
  range()
  map()
  filter()
  reverse()
递归函数;
  函数直接调用或间接调用自身
  直接调用自己
  def f():
  f()
  间接调用自己
  def fa():
  fb()
  def fb():
  fa()
  递归一定要控制递归的层数,当符合条件时要终止递归
  几乎所有递归都能用while循环来代替
递归特点:
  优点:
    递归吧问题简单化,让思路清晰代码简洁
  缺点
    递归因系统环境影响大,当递归深时,可能会得到不可预知的结果
  递推阶段:
    从原问题出发,按递归公式递推从未知到已知,最终达到递归的终止条件
  回归阶段
    按递归终止条件求出结果,逆向逐步代入递归公式
    回归到原问题求解

闭包 closure:
  闭包是引用了此函数外部的变量函数

  闭包是将内部嵌套函数外部执行环境绑定在一起的对象

装饰器 decorators(专业提高篇)
  装饰器一个函数 ,主要用来包装另一个函数或类
  装饰的目的是在 不改变函数的的原名(或类名)的情况下
  改变对象的行为
函数装饰器
  函数装饰器指装饰器传入的是一个函数返回的也是一个函数
  原理就是改变变量绑定的函数
函数的文档字符串
  函数内第一赋值给任何变量的字符串是此函数的文档字符串

模块 Module:
  模块是一个包含有一系列数据、函数、类等组成的程序组
  模块是一个文件,模块文件通常以.py结尾
  作用:
    一些相关数据、函数、类有逻辑组织在一起,使用逻辑结构清晰
    模块的数据、函数、类等 可提供给其他模块或程序使用
模块的分类;
  内建模块(builtins)在解析器的内可以直接使用、
  标准库模块,安装python时已安装且可以使用
  第三方模块(通常开源),需要自己安装
  用户自己编写模块(可以作为其他人的第三方模块)
    import 将某模块整体导入到当前模块中
    from import 将谋模块的一个或多个属性导入到当前模块的作用域
    from import * 将某模块的所有属性全部导入到当前模块
dir函数:
  dir([对象]) 返回一个字符串列表
  不给参数返回当前作用域内的所有变量的列表

内建模块

  数学模块用法:
    import math
    # 或
    from math import *
  变量 描述
    math.e 自然对数的底e
    math.pi 圆周率pi
  函数名       描述
math.ceil(x)       对x向上取整,比如x=1.2,返回2
math.floor(x)     对x向下取整,比如x=1.2,返回1
math.sqrt(x)      返回x的平方根
math.factorial(x)    求x的阶乘
math.log(x[, base])     返回以base为底x的对数, 如果不给出base,则以自然对数e为底
math.log10(x)       求以10为底x的对数
math.pow(x, y)       返回 x**y (x的y次方)
math.fabs(x)          返回浮点数x的绝对值
角度和弧度degrees互换
math.degree(x)      将弧度x转换角度
math.radians(x)      将角度x转换弧度
三角函数
math.sin(x)      返回x的正弦(x为弧度)
math.cos(x)     返回x的余弦(x为弧度)
math.tan(x)     返回x的正切(x为弧度)
math.asin(x)     返回x的反正弦(返回值为为弧度)
math.acos(x)    返回x的反余弦(返回值为为弧度)
math.atan(x)     返回x的反正切(返回值为为弧度)

时间模块 time
  此模块提供了时间相关的函数,且一直可用
  时间简介
  公元纪年是从公元 0000年1月1日0时开始的

  计算机元年是从1970年1月1日0时开始的,此时时间为0,之后每过一秒时间+1

  UTC 时间 (Coordinated Universal Time) 是从Greenwich时间开始计算的.
  UTC 时间不会时区问题而产生错误

  DST 阳光节约时间(Daylight Saving Time),又称夏令时, 是一个经过日照时间修正后的时间

  时间元组
  时间元组是一个9个整型元素组成的,这九个元素自前至后依次为:
  四位的(如: 1993)
   (1-12)
   (1-31)
   (0-23)
   (0-59)
   (0-59)
  星期几 (0-6, 周一是 0)
  元旦开始日 (1-366)
  夏令时修正时间 (-1, 0 or 1).
  注:
    如果年份值小于100,则会自动转换为加上1900后的值
    模块名: time
    时间模块用法:
    import time
    # 或
    from time import xxx
    # 或
    from time import *
  变量 描述
    time.altzone      夏令时时间与UTC时间差(秒为单位)
    time.daylight          夏令时校正时间
    time.timezone     本地区时间与UTC时间差(秒为单位)
    time.tzname          时区名字的元组, 第一个名字为未经夏令时修正的时区名,
                                        第一个名字为经夏令时修正后的时区名
  注: CST为中国标准时间(China Standard Time UTC+8:00)

函数名 描述
  time.time() 返回从计算机元年至当前时间秒数的浮点数(UTC时间为准)
  time.sleep(secs) 让程序按给定秒数的浮点数睡眠一段时间
  time.gmtime([secs]) 给定秒数转换为用UTC表达的时间元组
  (缺省返回当前时间元组)
  time.asctime([tuple]) 将时间元组转日期时间字符串
  time.mktime(tuple) 将本地日期时间元组换为新纪元秒数时间(UTC为准)
  time.localtime([secs]) UTC秒数时间转日期元组(以本地时间为准)

系统模块 sys
  运行时系统相关的信息
  sys模块的属性
  属性 描述
sys.path          模块搜索路径 path[0] 是当前脚本程序的路径名,否则为 ''
sys.modules         已加载模块字典
sys.version     版本信息字符串
sys.version_info   版本信息的命名元组
sys.platform   操作系统平台名称信息
sys.argv     命令行参数 argv[0] 代表当前脚本程序路径
sys.copyright   获得Python版权相关的信息
sys.builtin_module_names 获得Python内建模块的名称(字符串元组)
sys模块的函数
  函数名 描述
sys.exit([arg])       退出程序,正常退出时sys.exit(0)
sys.getrecursionlimit()   得到递归嵌套层次限制(栈的深度)
sys.setrecursionlimit(n)   得到和修改递归嵌套层次限制(栈的深度)


$ pip3 install tensorflow
  第三方模块 tensorflow 的安装
  必须有网 命令自动下载安装
  自定义模块文件名必须是标识符
模块的加载过程:
  1. 在模块导入时,模块的所有语句都会执行
  2. 如果一个模块已经导入,则再次导入时不会重新执行模块内的语句

重新加载mymodl1模块
  import imp
  imp.reload(mymodl1)

__doc__属性
  文档字符串自动赋值给
__file__ 属性
  查看模块的当前路径
dir(模块名)
  查看模块属性
模块以导入和执行的过程:
  1. 先搜索相关路径,找到模块名.py
  2. 判断是否有此模块对应的.pyc文件如果.pyc比.py文件新,则直接加载.pyc文件
  3. 否则 用模块.py,文件生成.pyc,并加载执行

pyc python的编译
编译 解释执行
  mymod.py --------> mymod.pyc --------> python3

  模块的文档字符串和函数一样

模块的 __doc__ 属性
  此属性用于绑定模块的文档字符串

模块的 __file__属性
  此属性用于记录模块对应的文件路径

模块的 __name__属性
  __name__属性 用来记录模块自身名字 判断是否为主模块

主模块: __name__绑定 '__main__'
  非主模块: __name__ 绑定模块名

模块的 __all__列表
  模块中的 __all__列表是一个用来存放可导出属性的字符串列表

模块的隐藏属性
  模块中以'_'开头的属性,在from xxx import * 导入时通常将不被导入

标准库模块

  随机模块 random
说明:
  random模块是用于模拟或生成随机输出的模块.
  import random as R

函数名 描述
R.random()           返回一个[0, 1) 之间的随机实数
R.uniform(a,b)          返回[a,b) 区间内的随机实数
R.randrange([start,] stop[, step])   返回range(start,stop,step)中的随机数
R.choice(seq)           从序列中返回随意元素
R.shuffle(seq[, random])     随机指定序列的顺序(乱序序列
R.sample(seq,n)            从序列中选择n个随机且不重复的元素
包(模块包) package
  包是将模块以文件夹的组织形式进行分组管理的管理方法
  __init__.py是常规包内必须存在的文件
  __init__.py会在包加载自动调用
  __init__.py :
  1. 编写此包的内容
  2. 在内部填写文档字符串
  . 在__init__.py文件内可以加载此包所依懒的一些其它模块

__init__.py内的 __all__ 列表
用来记录此包中有哪包或模块在用from import *语句 时被导入
  __all__列表只对 from xxx import *语句起作用
  导入包时的索引路径顺序:
  1. 搜索程序的当前路径
  2. sys.path 提供的路径

包的相对导入:
  包的相对导入是指包内模块的相互导入
  相对导入时不能超出包的外部
  包的相对导入 只对后两种导入方式有用

异常(基础)except:
  什么是错误:
    是指由于逻辑或语法等导程序无法正常执行的问题
  什么是异常:
    是程序出错的标识符的一种状态
    当异常发时 程序不会再向下执行,而转去调用此函数的地方
    待处理此错误并恢复为正常状态
异常的作用:
  用作信号, 通知上层调用者有错误产生需要处理
异常处理语句(4条):
  try-except 语句:
    用于接受异常通知, 捕获异常
  try-finally 语句:
    执行必须执行的语句
  raise 语句:
    发送异常通知, 并进入异常状态
  assert 语句:
    根据条件选着性的发送 AssertionError类型的异常通知
为什么要处理异常机制:
  程序调用层数比较深的时候, 向主调用函数传递错误信息 需要层层return返回
  比较麻烦, 用异常处理机制可以较简单的传递错误信息

用<>括号表示的一定是对象

什么是迭代器
  迭代器是访问可迭代对象的工具
  迭代器是指用iter(obj) 函数返回的对象
  迭代器可以用next(it) 函数获取可迭代对象的数据
  迭代器只能向前取值,不会后退
  用iter函数可以返回一个可迭代对象的迭代器
  迭代器函数iter和next
iter(iterable) 从可迭代对象中返回一个迭代器,iterable 必须是能提供一个迭代器的对象
next(iterator) 从迭代器iterator中获取下一个记录,如果无法获取下一条记录,则触发StopIteration异常

什么是生成器:
  生成器是能够动态提供数据的对象,生成器对象也是可迭代对象
  动态就是现用现生成数据
  生成器有两种:
  1. 生成器函数
  2. 生成器表达式
  生成器函数的定义
  含有yield语句的函数是生成器函数,此函数被调用将返回一个生成器对象
  yield 翻译为(产生或生成) 动态生成数据 在函数内可以一个或多少
  在生成器函数调用return 会触发一个StopIteration异常

函数:
  zip(iter1[, iter2[, ...]]) 返回一个zip对象,此对象用于生成元组,元组的个数由最小的可迭代对象决定
  enumerate(iterable[, start]) 生成带索引的枚举对象,返回迭代类型为索引-值对(index-value对)
,  默认索引从零开始,也可以用start指定(排序 自定义标号)

字节串和字节数组
字节串bytes (也叫字节序列)
  作用:
    存储以字节为单位的数据
    字节串是不可变的字节序列

字节:
  字节是由8个位(bit)组成的数据单位,是计算机进行数据管理的单位
  字节是用 0 ~ 255 范围内的整数表示的 2 ** 8 - 1

字节串的构造函数 bytes
  bytes() 生成一个字节串 等同于 b''
  bytes(整数可迭代对象) # 用可迭代对象初始化一个字节串
  bytes(整数n) 生成n个值为0的字节串
  bytes(字符串, encoding='utf-8') 用字符串码生成一个字节串

bytes 的运算:
  + += * *=
  < <= > >= == !=
  in / not in
  索引和切片
  len(x)
  max(x)
  min(x)
  sum(x)
  any(x)
  all(x)

bytes 和 str 的区别:
  bytes 存储字节( 通常值在 range(0, 256))
  str 存储unicode字符( 通常值在0~65535)


  bytes 与 str 的转换
  编码(encode)
    str ------------> bytes
    b = s.encode(encoding='utf-8')

  解码(decode)
    bytes ----------> str
    s = b.decode(encoding='utf-8')

字节数组 bytearray
  可变的字节序列
  字节数组的构造函数: bytearray
  bytearray() 创建空的字节数组
  bytearray(整数) 用可迭代对象初始化一个字节数组
  bytearray(整型可迭代对象) 生成n个值为0的字节数组
  bytearray(字符串, encoding='utf-8') 用字符串的转换编码生成一个字节数组
  索引和切片
  (字节数组支持索引和切片的赋值操作,规则同列表的索引和切片赋值规则)

bytearray的方法:
BA.clear() 清空  
BA.append(n)              追加一个字节(n为0~255的整数)
BA.remove(value)     删除第一个出现的字节,如果没有出现,则触发ValueError错误
BA.reverse()         字节顺序反转
BA.decode(encoding='utf-8')   # 解码为字符串
BA.find(sub[, start[,end]])         # 查找 sub

 

posted @ 2018-07-22 19:56  ParisGabriel  阅读(469)  评论(0编辑  收藏  举报