python-模块与包

模块

# 模块的定义:将一些复杂的需要重复使用的功能进行归类,分别放
# 到同一个py文件中,需要调用的时候直接拿出来使用就可以了
# import xiaomei
# 一.导入模块时做的事
# 1.先看看自己的内存里有没有,有的话就不干活了,没有在倒进来
# 2,创建一个命名空间,在这个命名空间中执行代码
# 3.创建了一个xiaomei这个名字,给命名空间中变量和xiaomei绑定在一起
# 4.import方式导入模块中的内容和正在操作的文件中的内容不会有冲突
# import sys
# print(sys.modules)
# 我们可以从sys.modules中找到当前已经加载的模块,sys.modules是一个字典
# ,内部包含模块名与模块对象的映射,该字典决定了导入模块时是否需要重新导入
# def drive():pass
# xiaomei.drive() #执行模块里的函数
# print(xiaomei.price)

# 二.import ...as :给模块重命名,重命名之后之前的名字就失效了,新名字可
# 以直接使用
#1.import的名字太长起一个别名
# 2当import的模块和我文件中的变量重名的时候
#3当兼容多个模块的相同操作的时候
# import xiaomei as xm #import的名字太长起一个别名
# xm.drive()
# import xiaomei as xm #当import的模块和我文件中的变量重名的时候
# def xiaomei():
# print(123)
# xm.drive()
# if 是mysql数据库: #当兼容多个模块的相同操作的时候
# import mysql as db
# elif 是oracle数据库:
# import oracle as db
# db.open
# db.write

# 三.import 多个模块
# import os,re,time #python支持这种语法,但是不建议同时导入多个模块
# 导入模块的规则:先导入内置的模块
# 再导入扩展模块:requests beautifulsoup django selenium paramikl
# 最后导入自定义的模块

# from xiaomei import drive,price
# from xiaomei import drive as d,price as p
# drive()
# from import 的用法会直接将导入的内容放在全局,但是drive中用到的变量和drive方法是一种绑定
# 关系,如果有同名,就会发生覆盖
# 测试三:导入的函数read1,被当前位置定义的read1覆盖掉了
# #demo.py
# from my_module import read1
# def read1():
# print('==========')
# read1()
# '''
# 执行结果:
# from the my_module.py
# ==========
# '''


# 当要使用这个模块中的多个方法的时候使用import模块名
# 当只是用模块中的一个或两个的时候使用from模块名import函数名
# 不推荐使用form import*
# import xiaomei
# from xiaomei import *
# from xiaomei import drive,price
# drive()
# print(price)

# from xiaomei import *
# *受到_all_的限制,如果不定义_all_就默认引入所有的
# 如果定义了,那么列表中有什么就能引入什么,但是不会影响没有引入的变量的使用,只需要
# from 模块名 import 变量名 就可以正常使用模块中的该变量
# import xiaomei
# print(drive)
# print(price)
# from xiaomei import price
# print(price)

# 模块在导入后是再次导入时是不会执行该模块内的代码的,如果该模块被修改了,
# 是不会被识别到的,使用importlib模块重新加载一下就可以看到效果
# import time,importlib
# import xiaomei
# xiaomei.drive()
# time.sellp(10)
# importlib.reload(xiaomei) #加载修改过后的模块内容
# print('price:',xiaomei.price)

# import xiaomei
# import re
# import sys
# print(sys.modules)
# print(sys.path)
# 执行python解释器,已经在内存中加载了一些内置的模块了,导入模块的时候,如果模块不存在
# 于sys.modules,才从sys.path给的路径中依次去查找
# sys.path完全可以决定某个模块能不能被找到(除了已经在内存中加载的一些内置模块)
# import xiaomei
# 当一个py文件被当做一个模块导入的时候,会自动生成一个pyc文件,
# pyc文件是这个代码编译之后的文件,节省了每一次导入代码之后还要编译的时间
# import xiaomei
# print(dir(xiaomei))
# import builtins
# print(dir(builtins))


















































原文地址:https://www.cnblogs.com/dwenwen/p/7874831.html