• 2015-12-06 第七天课程笔记


    复习

    模块

    模块支持从逻辑上组织Python代码。当代码量变得相当大的时候,我们最好把代码分成一些有组织的代码段,前提是保证他们的彼此交互。这些代码片段相互间有一定的联系,可能是一个包含数据成员和方法的类,也可能使一组相关但彼此独立的操作函数。这些代码段是共享的,所以Python允许“调入”一个模块,允许使用其他模块的属性来利用之前的工作成果,实现代码重用。这个把其他模块中属性附加到你的模块中的操作叫做导入(import).那些自我包含并且有组织的代码片段就是模块(module)。

    三类模块:

    内置模块,第三方模块以及自定义的模块

    常见的内置模块

    datetime

    datetime是Python处理日期和时间的标准库。

    os

    用于提供系统级别的操作

    sys

    用于提供对解释器相关的操作

    hashlib

    用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

    json 和 pickle

    用于序列化的两个模块

    • json,用于字符串 和 python数据类型间进行转换
    • pickle,用于python特有的类型 和 python的数据类型间进行转换

    shutil

    高级的 文件、文件夹、压缩包 处理模块

    ConfigParser

    用于对特定的配置进行操作,当前模块的名称在 python 3.x 版本中变更为 configparser。

    logging

    用于便捷记录日志且线程安全的模块

    time

    时间相关的操作,时间有三种表示方式:

    • 时间戳               1970年1月1日之后的秒,即:time.time()
    • 格式化的字符串    2014-11-11 11:11,    即:time.strftime('%Y-%m-%d')
    • 结构化时间          元组包含了:年、日、星期等... time.struct_time    即:time.localtime()

    re

    re模块用于对python的正则表达式的操作。

    字符:

      . 匹配除换行符以外的任意字符
      w 匹配字母或数字或下划线或汉字
      s 匹配任意的空白符
      d 匹配数字
       匹配单词的开始或结束
      ^ 匹配字符串的开始
      $ 匹配字符串的结束

    次数:

      * 重复零次或更多次
      + 重复一次或更多次
      ? 重复零次或一次
      {n} 重复n次
      {n,} 重复n次或更多次
      {n,m} 重复n到m次

    random

    随机数


    面向对象编程

    面向对象的三大特性是指:封装、继承和多态。

    一、封装

    封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。

    所以,在使用面向对象的封装特性时,需要:

    • 将内容封装到某处
    • 从某处调用被封装的内容

    二、继承

    继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。

      • 面向对象是一种编程方式,此编程方式的实现是基于对 对象 的使用
      • 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中)
      • 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数
      • 面向对象三大特性:封装、继承和多态

    类的成员

    类的成员可以分为三大类:字段、方法和属性

    一、字段

    字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同,

    • 普通字段属于对象
    • 静态字段属于

    二、方法

    方法包括:普通方法、静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同。

    • 普通方法:由对象调用;至少一个self参数;执行普通方法时,自动将调用该方法的对象赋值给self
    • 类方法:由调用; 至少一个cls参数;执行类方法时,自动将调用该方法的复制给cls
    • 静态方法:由调用;无默认参数;

    三、属性  

    如果你已经了解Python类中的方法,那么属性就非常简单了,因为Python中的属性其实是普通方法的变种。

    对于属性,有以下三个知识点:

    • 属性的基本使用
    • 属性的两种定义方式

    类成员的修饰符

    类的所有成员在上一步骤中已经做了详细的介绍,对于每一个类的成员而言都有两种形式:

    • 公有成员,在任何地方都能访问
    • 私有成员,只有在类的内部才能方法

    类的特殊成员

    1. __doc__

      表示类的描述信息

     

    2. __module__ 和  __class__

    __module__ 表示当前操作的对象在那个模块

      __class__     表示当前操作的对象的类是什么

     

    3. __init__

     构造方法,通过类创建对象时,自动触发执行。

     

    4. __del__

    析构方法,当对象在内存中被释放时,自动触发执行。

    注:此方法一般无须定义,因为Python是一门高级语言,程序员在使用时无需关心内存的分配和释放,因为此工作都是交给Python解释器来执行,所以,析构函数的调用是由解释器在进行垃圾回收时自动触发执行的。

     

    5. __call__

    对象后面加括号,触发执行。

    注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()

     

    6. __dict__

      类或对象中的所有成员

     

    7. __str__

      如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值。

     

    8、__getitem__、__setitem__、__delitem__

    用于索引操作,如字典。以上分别表示获取、设置、删除数据

     

    9、__getslice__、__setslice__、__delslice__

    该三个方法用于分片操作,如:列表

     

    10. __iter__

    用于迭代器,之所以列表、字典、元组可以进行for循环,是因为类型内部定义了 __iter__ 

  • 相关阅读:
    8月的list
    hdu 2853
    【问题交流】JAVA 基础 switch 执行顺序的问题
    h5/css动态旋转木马源码
    javascript系列丛书之读后感
    java运行闪退,报错如下,是因为ole32.dll的问题吗?
    js
    切换为文本框编辑状态,点击空白区域保存修改
    前端工程师源码分享:html5 2d 扇子
    2017武汉马拉松4月9日开跑啦~~~
  • 原文地址:https://www.cnblogs.com/echorep/p/5040567.html
Copyright © 2020-2023  润新知