Python极简读书笔记(三)自建python模块和第三方模块

112 阅读2分钟

导入Python标准库

import xxx as yyyy
​
from xxx import yyy as zzz

c/c++/java/c#都有main函数,但是python是脚本语言,解释执行,先到的代码先解释先执行,并没有统一的入口

  • 问:如何实现导入的自定义python模块里只执行部分指定方法,不执行其他方法?

    • 当直接运行时,——name——就是——main——;当被当模块引用时,——name——等于——模块名——。这就实现内外有别
    • PI = 3.14
      ​
      def paraTest():
          print("PI=", PI)
          
      if __name__ == '__main__':    
          paraTest()
      

模型搜索路径 Model search path

import sys
sys.path
​
home_dir = '/Users/luozw/Movies'
sys.path.append(home_dir)
sys.path

比如我们讲home_dir加入sys.path路径,那么这个home_dir里的python可以作为模块直接导入

模块包package

一个包就是包含若干模块的文件夹

一个模块可以理解为一个.py文件

包是python用来组织命名空间namespace和类的重要媒介

image-20221101162934523

常用的内置模块

  • collections --- 容器数据类型,高性能容器

    • namedtuple()创建命名元组子类的工厂函数
      deque类似列表(list)的容器,实现了在两端快速添加(append)和弹出(pop)
      ChainMap类似字典(dict)的容器类,将多个映射集合到一个视图里面
      Counter字典的子类,提供了可哈希对象的计数功能
      OrderedDict字典的子类,保存了他们被添加的顺序
      defaultdict字典的子类,提供了一个工厂函数,为字典查询提供一个默认值
      UserDict封装了字典对象,简化了字典子类化
      UserList封装了列表对象,简化了列表子类化
      UserString封装了字符串对象,简化了字符串子类化
  • datetime模块

  • JSON模块

    • 全部小写:json
    • 函数描述
      json.dumps将 Python 对象编码成 JSON 字符串
      json.loads将已编码的 JSON 字符串解码为 Python 对象
    • PythonJSON
      dictobject
      list, tuplearray
      str, unicodestring
      int, long, floatnumber
      Truetrue
      Falsefalse
      Nonenull
  • random模块

    • random.random() 0-1

    • random.uniform(10, 20) 10-20

      • 小技巧:random.uniform? === -h
    • random.randint(1, 100) [1-100] 整数

    • print( random.randrange(1,100,2) ) # 生成从1到100的间隔为2的随机整数 [1,100)

    • random.choice(list)

    • random.choices(list, 3) # 挑3个出来,放回采样

    • random.sample(list, 3) #一次性抽取3个,返回结果是list

    • random.shuffle(list) #打乱排序

import string
import random
​
# string.printable()搞出一个list,然后choices7个出来,再“”join成string,然后for range 500遍
coupon_dict = {"".join(random.choices(string.printable[:62], k = 7)) : 1 for _ in range(500)}
​
import json
with open('coupon.json', 'w') as f:
    json.dump(coupon_dict, f)