python复习笔记

发布于 2019-07-20  48 次阅读


python胶水语言

1.python领域

大数据,web,人工智能,分析,爬虫,

2.一些规范

  • # -*- coding:utf-8 -*- ,-*-是为了美观

  • 编写规则PEP8,全称Python Enhancement Proposal (python增强建议书)

  • 尽量只导入一个模块

  • 末尾不要添加分号,语句不要在一行

  • 多行字符串用()而不是\

  • 空行增加代码可读性,pycharm自动提示

  • 避免循环中使用+=,+运算累加运算符,字符串不可变,会创建临时对象。建议join方法

  • 命名规范Pascal规范

  • python的下划线有特殊含义,比如单下划线不能直接访问和导入,双下划线开头,私有变量,双下划线在两头,是构造方法。

  • 小函数:id()返回内存地址,type()返回类型,len()返回长度(中文算一个字符),max(),min(),range()

  • 数据类型转换函数:int(),float(),complex(),str(),repr(),eval(),chr(),ord(),hex(),oct();

  • 运算符://整除,**幂

  • 原码:第一位是符号位,其余是数值

  • 补码:第一位不变,其余取反,然后加一

  • 反码:第一位不变,其余取反。

  • ==逻辑运算符:位与,位或,位异或,位取反==

  • 运算符优先级:

    **(幂) **> **

    ~,+,-(正号负号) >

    ***, /,% ,//(乘,除,取于,取整)** >

    +,- > (加,减) >

    <<,>>(位左移,位右移) >

    **&(位与) > **

    ^(异或) >

    |(位或) >

    **<,<=,>,>=,!=,==(比较运算符) **

3.序列

  • 列表 有序 可变 可重复 [] list()
  • 元组 有序 不可变 可重复 (), tuple()
  • 字典 无序 可变key:value 可重复 {} ,dict()
  • 集合 无序 可变 不可重复 {}

4.字符串

  • 拼接最好用join()
  • python中,数字英文小数点下划线空格占一个字节,utf-8汉子占用3-4,gbk汉子占用2个(encode,可以统计汉字)
  • 字符串可以用切片截取string[start​,end,step](不是用逗号分隔)
  • 分割字符串 split(sep,maxsplit)
  • 检索出现次数str.count(sub[,start[,end]])
  • 检索是否包含str.find(sub[,start,[end]])
  • 检索是否包含str.index(sub[,start,[end]) 字符串不存在不会出现异常
  • 检索开头结尾,startswith(sub[,start,[end]),endswith(sub[,start,[end])参数都差不多
  • 大小写转换lower(),upper()
  • 去空格strip(),lstrip(),rstrip().
  • 格式化字符串%是早起python,新版都用format方法
  • str.format()简单来说就是填充,例如“{0},world”,“hello”合起来就是hello world,需要注意索引要么手动指定,要么自动指定,索引后面的参数书中143页,s,b,d,o,c,x,e,f,g,%,{:.2f}==需要加深理解==,精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符, 则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
  • 编码和解码encode([encoding=' '][,error='strict']),decode([encoding=' '][,error='strict']),==encode不修改原本字符==
  • 正则re模块,match(),search(),findall(),sub(),re.split(),标志位:A,I,M,S,X

5.函数

  • 创建函数:def 函数名(参数)

  • 调用函数:函数名(参数)

  • 形式参数,实际参数,就是形参和实参。

  • 位置参数:

    ​ 数量一致,位置一致,关键参数赋值,指定参数默认值

    ​ 参数默认值不要使用可变参数(__defaults__查看默认参数值的当前值)

    ​ *variable 可变参数,将多个参数放入元组中(使用已存在的元组,传参之前加*)

    ​ **variable 可变参数 用key,value方式存储(使用已存在的字典,传参之前加**)

  • ==super().__init__(),方法不能加self,默认已经传递==

  • 返回值 return [value]

  • 变量的作用域:
  • 局部变量:函数内部定义,只在函数内部有效

  • 全局变量:函数外定义,函数内外都有效,函数体内加关键字globe,变量也变成了全局变量,并且函数体内可以修改。

  • 匿名函数:lambda函数 不推荐使用

6.面向对象程序设计

  • 静态部分对应属性:动态部分对应方法

  • 面型对象三大特征:封装继承多态

  • 封装:面向对象核心思想,将属性行为封装,载体是类,类对用户隐藏细节。

  • 继承:从父类继承公用属性,语法:ClassName(BaseClass)

  • 多态:父类对象应用子类的特征

  • 定义类:驼峰命名,__init__(self)是构造方法,默认是只传递self

  • 定义方法:def functionName(self,parameterlist)

  • 创建实例:className()

  • 访问限制:

    首位双下划线:系统定义

    单下划线:受保护的类型,只允许本身和子类访问,不能使用from module import * 导入

    双下划线:私有的类型,只允许类本身访问,不能通过类的实例访问,可以通过类的实例名._类名_xxx访问

  • 属性:==(未掌握牢固)==

    通过@property(装饰器),直接访问方法名,调用方法,省略了()

    通过@property,可以实现只读属性,为属性设置拦截器(修改属性要遵循规定)

7.模块

模块:一个py文件就是一个模块,模块可以有效避免函数名和变量名冲突,让代码更易读,提高开发效率。

导入:import,from module import *导入,as可以定义别名

搜索目录顺序:当前目录->pythonpath目录(环境变量)->python默认安装目录

目录定义:

​ 1.临时添加sys.path.append('目录')

​ 2.(推荐)创建pth文件,更改内容为导入模块目录,放在安装目录Lib\site-packages子目录中

​ 3.创建环境变量PYTHONPATH,在环境变量中添加目录

包:就是一个文件夹,里面存在一个文件名为__init__py的文件
python标准模块:sys,time,os,calendar,urllib,json.re,math,decimal,shutil,logging,tkinter

8.异常处理及程序调试

  • 各种错误的集合,就是异常:

    NameError,没有声明的变量引用异常

    IndexError:索引越界

    IndentationError:缩进错误

    ValueError:值传递错误

    KeyError:请求不存在的字典

    IOError:输入输出错误

    ImportError:导入无法找到模块

    AttributeError:访问未知对象或者属性

    TypeError:类型不合适引发的错误

    MemoryError:内存不足

    ZeroDivisionError:除数不能为0

  • 捕获异常:

    try: code except [exceptionName [as alias]]

    try: code except [exceptionName [as alias]]:code else:code

    try: code except [exceptionName [as alias]]:finally

    raise抛出异常

  • 调试

    assert expression[,reason] //reason可选参数,对判断的描述

    ==[,reason]==:需要加,号

9.目录以及文件操作:


把一切平凡的事做好即不平凡,把一切简单的事做好即不简单。