FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [View Raw Code]   [Original HTTPS Page]

Notes/python-basic-notes/python-days/Day_10.md at master · We2one/Notes · GitHub

/ Notes Public

Latest commit

 

History

History
373 lines (306 loc) · 14.8 KB

File metadata and controls

373 lines (306 loc) · 14.8 KB

Day_10

内置模块

  • random 模块 (随机模块)

    • 随机小数

      • random() : 产生 0-1 之间的随机小数

        import random
        # from random import random
        random.random()
        # random()
        
      • uniform(a, b) : 指定范围随机小数

    • 随机整数

      • randint(a, b) : 指定范围随机整数,包含开头结尾

      • randrange(start, stop, [step]) : start, stop 范围内间隔指定步长 (step) 的整数,包含开头不包含结尾

    • 随机选择一个数据

      • random.choice(lst) : 随即返回可迭代序列的一个数据
        # from random import choice
        import random
        lst = [1,2,3,4,5]
        random.choice(lst)
        # choice(lst)
    • 打乱

      • random.shuffle(可迭代序列) : 打乱列表顺序
  • sys 模块 imort sys

    • sys.version : 返回解释器版本号

      >>> sys.version
      '3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)]'
      
    • sys.path : 返回模块搜索路径

      >>> sys.path
      ['', 'E:\\PyCharm 2020.2\\python3.7\\python37.zip', 'E:\\PyCharm 2020.2\\python3.7\\DLLs', 'E:\\PyCharm 2020.2\\python3.7\\lib', 'E:\\PyCharm 2020.2\\python3.7', 'E:\\PyCharm 2020.2\\p
      ython3.7\\lib\\site-packages', 'E:\\PyCharm 2020.2\\python3.7\\lib\\site-packages\\win32', 'E:\\PyCharm 2020.2\\python3.7\\lib\\site-packages\\win32\\lib', 'E:\\PyCharm 2020.2\\python3
      .7\\lib\\site-packages\\Pythonwin']
      
    • sys.argv : 接收命令行下参数

      import sys
      
      print(sys.argv)
      print(ret[0])
      print(ret[1])
      print(ret[2])
      
      >>>python Day_10.py run start
        ['Day_10.py', 'run', 'start']
        Day_10.py
        run
        start
      
  • string : 提供系统中字符串的基本操作方式,描述当前编程语言中使用到的字符分类 import string

    • string 模块下 所有内容

      whitespace = ' \t\n\r\v\f'
      ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
      ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
      ascii_letters = ascii_lowercase + ascii_uppercase
      digits = '0123456789'
      hexdigits = digits + 'abcdef' + 'ABCDEF'
      octdigits = '01234567'
      punctuation = r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
      printable = digits + ascii_letters + punctuation + whitespace
      
    • 查看 string 模块 dir(str)

      >>> dir(string)
      ['Formatter', 'Template', '_ChainMap', '_TemplateMetaclass', '__all__', '__builtins__', 
      '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_re',
      '_string', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 
      'octdigits', 'printable', 'punctuation', 'whitespace']
      
    • 字符串显示大小写全英文字母 string.ascii_letters

      >>> string.ascii_letters
      'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
      
    • 字符串显示大写全英文字母 string.ascii_uppercase

      >>> string.ascii_uppercase
      'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
      
    • 字符串显示小写全英文字母 string.ascii_lowercase

      >>> string.ascii_lowercase
      'abcdefghijklmnopqrstuvwxyz'
      
    • 字符串显示 0~9 十个数字 string.digits

      >>> string.digits
      '0123456789'
      
    • 字符串显示 十六进制用到的所有字母数字 string.hexdigits
      (hexdigits = digits + 'abcdef' + 'ABCDEF')

      >>> string.hexdigits
      '0123456789abcdefABCDEF'
      
    • 字符串显示 八进制用到所有数字 string.octdigits (octdigits = '01234567')

      >>> string.octdigits
      '01234567'
      
    • string.whitespace 将为字符提供空格,制表符,换行符,返回符,换页符和垂直制表符。 string.whitespace

      >>> string.whitespace
      ' \t\n\r\x0b\x0c'
      
    • string.printable 返回所有标点符号集,数字,ascii_letters和空格。 string.printable

      >>> string.printable
      '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
      
    • random 与 string 模块结合生成六位数验证码

      >>>''.join(random.sample(string.ascii_letters+string.digits, 6))
      'A0yNxY'
      
  • time 模块

    • python 表示时间的三种方式

      1. 时间戳 (timestamp) [计算机能够识别的时间格式, float类型]

        • 表示的是从 1970年1月1日00:00:00 开始到现在的秒值
      2. 时间元组 (struct_time) [人方便观看的时间格式]

        • 9 个元素 (年、月、日、时、分、秒、一周的第几日、一年的第几天、夏令时)

          元素 属性
          tm_year (4 位数) 2008
          tm_mon 1 - 12
          tm_mday 1 - 31
          tm_hour 小时 0 - 23
          tm_min 分钟 0 - 59
          tm_sec 0 - 61 (60 或 61 是闰秒)
          tm_wday 一周的第几日 0 - 6 (0 是周一)
          tm_yday 一年的第几日 1 - 366 (儒略历)
          tm_isdst 夏令时 -1, 0, 1 (-1 是决定是否为夏令时的旗帜)
      3. 格式化的时间字符串 [便于操作的时间格式]

        • 表示方式 : '1999-1-02'

          元素 属性
          %y 两位数的年份表示 00 - 99
          %Y 四位数的年份表示 000 - 9999
          %m 月份 01 - 12
          %d 月内的一天 0 - 31
          %H 24 小时制小时数 0 - 23
          %I 12 小时制小时数 01 - 12
          %M 分钟数 0 - 59
          %S 0 - 59
          %a 本地简化星期名称
          %A 本地完整星期名称
          %b 本地简化月份名称
          %B 本地完整月份名称
          %c 本地相应的日期表示和时间表示
          %j 年内的一天 001 - 366
          %p 本地 A.M. 或 P.M. 的等价符 上午下午
          %U 一年中的星期数 (星期天为星期的开始) 00 - 53
          %w 星期 (星期天为星期的开式) 0 - 6
          %W 一年中的星期数 (星期一为星期的开始) 00 - 53
          %x 本地相应的日期表示
          %X 本地相应的时间表示
          %Z 当前时区的名称
          %% % 号本身
    • time.sleep(seconds) : 睡眠功能,是程序休眠多少秒后继续执行

    • time.time() : 时间戳

      • 使用 : 定义两个时间戳(start, end)在程序的开始与结尾, end-start 为程序运行时间
    • time.localtime(seconds=None) : 时间元组 (可以传入时间戳来转化为时间元组)

      # 将当前时间戳转化为时间元组
      >>> time.localtime()
      time.struct_time(tm_year=2020, tm_mon=8, tm_mday=21, tm_hour=10, tm_min=27, tm_sec=27, tm_wday=4, tm_yday=234, tm_isdst=0)
      
    • time.strftime(format, p_tuple=None) : 根据格式规范将时间元组转换为字符串, 默认为当前时间

      • format : 自定义的时间格式
      • p_tuple : 需要 元组struct_time 参数 默认为当前时间(struct_time类型为 time.localtime()返回类型)
      >>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
      '2020-08-21 10:32:50'
      >>> time.strftime('%Y-%m-%d %H:%M:%S')
      '2020-08-21 10:35:31'
      >>> time.strftime('%Y/%m/%d %H:%M:%S')
      '2020/08/21 10:36:10'
      >>> time.strftime('%x %X')
      '08/21/20 10:37:58
      
    • 时间戳与时间元组转换

      • 时间戳转化为时间元组
        • time.gmtime(seconds=None) UTC 时间 (世界统一时间比北京时间少 8 小时)和 time.localtime() (本地时间) 默认为当前时间

          >>> time.gmtime()
          time.struct_time(tm_year=2020, tm_mon=8, tm_mday=21, tm_hour=2, tm_min=48, tm_sec=18, tm_wday=4, tm_yday=234, tm_isdst=0)
          >>> time.localtime()
          time.struct_time(tm_year=2020, tm_mon=8, tm_mday=21, tm_hour=10, tm_min=48, tm_sec=55, tm_wday=4, tm_yday=234, tm_isdst=0)
          
      • 时间元组转化为时间戳
        • time.mktime()

          >>> time.mktime(time.localtime())
          1597978194.0
          >>> time.mktime(time.gmtime())
          1597949433.0
          >>> time.time()
          1597978205.5068083
          
    • 时间元组和格式化字符串之间的转换

      • 时间元组转化字符串
        • time.strftime("格式定义", "结构化时间") 结构化时间若不传,默认为当前时间

          >>> time.strftime('%x %X')
          '08/21/20 10:37:58'
          
      • 字符串转时间元组
        • time.strptime("时间字符串", "字符串对应格式")

          >>> time.strptime('Fri Aug 21 10:52:32 2020')
          time.struct_time(tm_year=2020, tm_mon=8, tm_mday=21, tm_hour=10, tm_min=52, tm_sec=32, tm_wday=4, tm_yday=234, tm_isdst=-1)
          >>> time.strptime("2020-2-1", "%Y-%m-%d")
          time.struct_time(tm_year=2020, tm_mon=2, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=32, tm_isdst=-1)
          
    • 时间元组 --> %a %b %d %H:%M:%S %Y 时间串 (周 月 日 时:分:秒 年)

      • time.asctime("结构化时间") 若不传参数,默认为当前时间的格式串

        >>> time.asctime()
        'Fri Aug 21 10:52:32 2020'
        
    • 时间戳 --> %a %b %d %H:%M:%S %Y 时间串 (周 月 日 时:分:秒 年)

      • time.ctime("时间戳") 若不传参数,默认为当前时间的格式串

        >>> time.ctime(time.time())
        'Fri Aug 21 10:53:28 2020'
        >>> time.ctime(time.mktime(time.localtime()))
        'Fri Aug 21 10:54:00 2020'
        >>> time.ctime(time.mktime(time.gmtime()))
        'Fri Aug 21 02:54:23 2020'
        
  • datetime 模块 import datetime

    • datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) 生成 日期和时间的结合

      • 必须输入年,月和日。
      • tzinfo可以为None,或者为tzinfo子类的实例。
      • 其余参数是整数。
      >>> print(datetime.datetime(2020,3,4,5,5,6))
      2020-03-04 05:05:06
      
    • datetime.date(year, month, day) 生成理想化的简单型日期,它假设当今的公历在过去和未来永远有效

      >>> print(datetime.date(2020,5,6))
      2020-05-06
      
    • datetime.time(hour, minute, second[, microsecond[, tzinfo]]) 生成独立于任何特定日期的理想化时间,它假设每一天都恰好等于 246060 秒。 (这里没有“闰秒”的概念。)

      >>> print(datetime.time())
      00:00:00
      >>> print(datetime.time(4,5,6))
      04:05:06
      
    • d = datetime.now() 当年时间 年月日时分秒

      >>> datetime.datetime.now()
      datetime.datetime(2020, 8, 21, 13, 56, 59, 65930)
      
      • d.year 年
      • d.month 月
      • d.day 日
      • d.hour 时
      • d.minute 分
      • d.microsecond 微秒
  • hashlib 模块 (加密模块) import hashlib

    • 加密方式 ['algorithms_available', 'algorithms_guaranteed', 'blake2b', 'blake2s', 'md5', 'new', 'pbkdf2_hmac', 'scrypt', 'sha1', 'sha224', 'sha256', 'sha384', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', 'sha512', 'shake_128', 'shake_256']

面向对象 编程(Object Oriented Programming, OOP)

  • 术语

    • 类 : 具有共同特征以及行为的对象的抽象,描述一类事物
    • 对象 : 实际存在的物体,包含具体属性和方法的实体
    • 属性 : 变量 ,存储数据, 描述事物的特征
    • 方法 : 类中声明的 函数, 描述事务的行为
    • 构造方法 : 通过指定的类创造对象的方法,通过构造方法按照需求创建对应类的对象
    • 类和对象关系 : 计算机编程语言中描述事物的载体。对象是类的实例,类是对象的模板
  • 类的声明 (class)

    • 基本语法
      class 类名:
      """类的文档注释"""
      def __init__(self, name):
          """声明属性的方法"""
          # 自定义属性: 固定语法
          self.name = name
      
      def study(self):
          """方法文档注释"""
          代码
      
  • 面向对象设计开发

    • 面向对象分析 (OOA: Object-Oriented Analysis)
    • 面向对象设计 (OOD: Object-Oriented Design)
    • 面向对象编程 (OOP: Object-Oriented Programming)
    • 面向对象测试 (OOT: Object-Oriented Testing)
  • __new__(cls, *args, **kwargs) : 创建对象实例方法 (最先被调用) ,实例化时先 __new__ 再 __init__

    • 当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。还有就是实现自定义的metaclass。
  • __init__(self) : 类的构造函数或初始化方法,可以让创建对象更加灵活

  • __str__(self) : 目标是可读性,或者说,__str__的结果是让人看的。打印对象的属性信息,方便我们调试代码。

  • __repr__(self) : 目标是准确性,或者说,__repr__的结果是让解释器用的,转化为供解释器读取的形式

  • __del__(self) : 当一个对象被从内存中销毁前(把这个对象从内存中删除掉),会自动调用__del__方法

  • __dict__ : 类的属性(包含一个字典,由类的数据属性组成)

  • __doc__ : 类的文档字符串

  • __module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)

  • __bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

  • __cmp__ ( self, x ) : 对象比较, 简单的调用方法 : cmp(obj, x)


Back | FazBrowse Home | New Git URL